java.sql.SQLException: 无效的列类型

ljying 2009-12-10 11:48:09
java.sql.SQLException: 无效的列类型,为什么会有这样的错误,我在插入的时候把sql语句都打印出来了,在Oracle里可以插入,为什么在程序中还会报这样的错误
...全文
71780 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
dever2011 2012-10-30
  • 打赏
  • 举报
回复
我也是遇到这个问题///
wkp911228 2011-10-18
  • 打赏
  • 举报
回复
要指定你插入那些值的数据库类型。我先也出现这个错 后来我这样就好了
leiwd001 2010-12-28
  • 打赏
  • 举报
回复
在oracle中,如果你定义了varchar2类型的,在程序中insert对应值时,如果值为null则报无效列类型,但在plsql中没有这个问题,所以上述的解决方法,是把null换成空字符串
Qyin2009and2010 2010-11-23
  • 打赏
  • 举报
回复
遇到相同的问题~
manxiao 2010-10-26
  • 打赏
  • 举报
回复
你没有接收到值,插入的是空值
ljying 2009-12-10
  • 打赏
  • 举报
回复
FWXX v=new FWXX();
FWXXdao dao=new FWXXdao();
HttpSession session=request.getSession();
UserInfo uv=(UserInfo)session.getAttribute("User");
int userid=uv.getId();

String jdid=request.getParameter("jdid");
String lxid=request.getParameter("fwlx");
String shi=request.getParameter("shi");
String ting=request.getParameter("ting");
String fwxx=request.getParameter("fwxx");
String zj=request.getParameter("zj");
String title=request.getParameter("title");
String telephone=request.getParameter("telephone");
String lxr=request.getParameter("lxr");
String qxid=request.getParameter("qxid");
// System.out.println(lxid);
v.setJdid(Integer.parseInt(jdid));
v.setId(userid);
v.setFwxx(fwxx);
v.setLxid(Integer.parseInt(lxid));
v.setZj(Integer.parseInt(zj));
v.setQxid(Integer.parseInt(qxid));
v.setLxr(lxr);
v.setShi(Integer.parseInt(shi));
v.setTing(Integer.parseInt(ting));
v.setTelephone(telephone);
v.setTitle(title);
liuyong1024757684 2009-12-10
  • 打赏
  • 举报
回复
应该是数据类型出现错误 或者是实体类 和数据库里数据类型不匹配 很可能是在实体类出现错误
bunrise 2009-12-10
  • 打赏
  • 举报
回复
数据类型对应不上,你打印的时候是自己加的''号

但是如果你values里有非字符串的时候,他不会给你加''
你仔细检查一下,初看我认为在fwxx
ljying 2009-12-10
  • 打赏
  • 举报
回复
打印出来的System.out.print(....)显示的是insert into tbl_fwxx values(seq_tbluser.nextval,3,1,2,1,1,'null',132,'324',SYSDATE,'132123','123321',1)
在数据库中插入无误,帮帮啦
ljying 2009-12-10
  • 打赏
  • 举报
回复
public boolean inserFWXX(FWXX v) throws Exception{
boolean flag=false;
Object[] values={v.getId(),v.getJdid(),v.getLxid(),v.getShi(),v.getTing(),
v.getFwxx(),v.getZj(),v.getTitle(),v.getTelephone(),v.getLxr(),v.getQxid()};
String sql="INSERT INTO TBL_FWXX(fwid,id,jdid,lxid,shi,ting,fwxx,zj,title,pubdate,telephone,lxr,qxid)"
+ " values(seq_fwxx.nextval,?,?,?,?,?,?,?,?,sysdate,?,?,?)";
System.out.println("insert into tbl_fwxx values"+"(seq_tbluser.nextval,"+v.getId()+","+v.getJdid()+","+v.getLxid()+","+v.getShi()+","+v.getTing()+",'"+v.getFwxx()+"',"+v.getZj()+",'"+v.getTitle()+"',"+"SYSDATE,'"+v.getTelephone()+"','"+v.getLxr()+"',"+v.getQxid()+")");
flag=super.executeUpdate(sql, values);
return flag;
}
_______________________________________________________________________
public boolean executeUpdate(String sql,Object[] values)throws Exception{
boolean flag=false;
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
con=DBConnection.getDBConnection();
ps=con.prepareStatement(sql);
con.setAutoCommit(true);
int i=1;
for(Object o:values){
ps.setObject(i++,o);
}
int row=ps.executeUpdate();
if(row>0){
flag=true;
}
con.commit();
} catch(Exception ex){
ex.printStackTrace();
throw new Exception("数据库修改错误,原因: "+ex.getMessage());
}finally{
DBConnection.closeDBResource(con, ps, null);
}
return flag;
}
zrcai 2009-12-10
  • 打赏
  • 举报
回复
代码贴出来看一下!
老张-AI 2009-12-10
  • 打赏
  • 举报
回复
是不是ID的问题哦
bunrise 2009-12-10
  • 打赏
  • 举报
回复
for(Object o:values){
ps.setObject(i++,o);
}

这里你有一个值为null了
这里写个判断你试一下

for(Object o:values){
if(o ==null){
ps.setObject(i++,o,java.sql.Types.VARCHAR);
}else{
ps.setObject(i++,o);
}
}
ljying 2009-12-10
  • 打赏
  • 举报
回复
我是这么吧他们取出来放进一个vo里的,实在是不知道我那个步骤错了,FWXX vo里属性jdid,userid,lxid,shi,ting ,zj,qxid,fwid是int 型的,其余都是string的,跟数据库里的类型都是一致的

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧