修改数据库记录不成功--在线等 [IBM][CLI Driver][DB2/NT] SQL0302N 在 EXECUTE 或 OPEN 语句中的主机变量值对于其相应的使用来说过大。 SQLSTATE=22001有时会有这样的错误,不知道是什么意思 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是修改数据库记录的方法,STRINGUPDATE是sql语句,应该没有问题;tecdef是个对象,用这个对象获取要修改的值 public void executeUpdate(){ try { conn= connmgr.getDB2Connection(); } catch (Exception ex) { //connmgr.dropDB2Connection();//释放连接 System.out.println( ex.toString()); //throw ex; } try{ PreparedStatement pstmt = conn.prepareStatement(STRINGUPDATE); // pstmt.setString(1,tecdef.getIncode()); pstmt.setString(2, tecdef.getInname()); pstmt.setString(3,tecdef.getTeacherid()); pstmt.setString(4,tecdef.getTeachername()); pstmt.setDate(5,tecdef.getBirthday()); pstmt.setString(6, tecdef.getGender()); pstmt.setString(7, tecdef.getPoly()); pstmt.setString(8, tecdef.getNation()); pstmt.setString(9, tecdef.getEducation()); pstmt.setString(10, tecdef.getLevel()); pstmt.setString(11, tecdef.getBianzhi()); pstmt.setString(12, tecdef.getInschool()); pstmt.setString(13, tecdef.getDepartment()); pstmt.setString(14, tecdef.getHealth()); pstmt.setString(15, tecdef.getIdentity()); pstmt.setString(16, tecdef.getMarry()); pstmt.setString(17, tecdef.getNativeplace()); pstmt.setDate(18,tecdef.getWorktime()); pstmt.setDate( 19, tecdef.getCometime()); pstmt.setString(20, tecdef.getHomephone()); pstmt.setString(21, tecdef.getPostaddress()); pstmt.setString(22, tecdef.getPostcode()); pstmt.setString(23,tecdef.getEmail()); pstmt.setString(24, tecdef.getRe()); pstmt.setString(25, tecdef.getTeacherid()); pstmt.executeUpdate(); pstmt.close(); connmgr.dropDB2Connection(); conn.close(); }catch(Exception e){ System.out.print("There is wrong with update:"+e.getMessage()); }} 有些字符串的长度超过你在sql里定义的长度仔细检查一下吧,注意空格! 有些字符串的长度超过你在sql里定义的长度仔细检查一下吧,注意空格! 谢谢 sgdb(神天月晓) 你说的是EXECUTE 或 OPEN 那个错误产生的原因但为什么没修改成功还是不知道 22001 值需要截断。 值需要被系统强制转换或调整函数截断。 http://www-3.ibm.com/software/data/db2/everyplace/doc/chs/html/adg/dsyadgtfrm.htm?sqlstate.htm这个是IBM官方网站,给你的连接是DB2出错代码的集合,收藏一下吧~偶用的也是DB2~ 有可能你的pstmt太长了~超出规定范围,所以被截断,也就不能正常运行了~ Geranium(魂归阿寒) 赫赫:不是太长了是输入的信息超出了字段定义的长度 pstmt.executeUpdate();变成int[] updateCounts=pstmt.executeBatch(); jsp页面的传值问题 请问各位一个小问题 struts<logic:iterate>循环打印换行的方法 为什么同样的一段程序在java里生成的文件能删除,但是在jsp里运行生成的文件就删除不了? tomcat(5.0)连接db2问题,救命阿。。。,问题解决另开帖给分100 给个报价 关于dojo的一个问题, 郁闷,继续请教 Applet调用API打印的问题,怎样直接触发打印按钮? 用dfs完成树性帖子的显示,每次都新建一个Statement 和 ResultSet好慢 如何设置输入框为只读? javabean 在tomcat4.1.24 里不能使用session 对象啦?
public void executeUpdate(){ try {
conn= connmgr.getDB2Connection();
}
catch (Exception ex) {
//connmgr.dropDB2Connection();//释放连接
System.out.println( ex.toString());
//throw ex;
}
try{
PreparedStatement pstmt = conn.prepareStatement(STRINGUPDATE);
//
pstmt.setString(1,tecdef.getIncode());
pstmt.setString(2, tecdef.getInname());
pstmt.setString(3,tecdef.getTeacherid());
pstmt.setString(4,tecdef.getTeachername());
pstmt.setDate(5,tecdef.getBirthday());
pstmt.setString(6, tecdef.getGender());
pstmt.setString(7, tecdef.getPoly());
pstmt.setString(8, tecdef.getNation());
pstmt.setString(9, tecdef.getEducation());
pstmt.setString(10, tecdef.getLevel());
pstmt.setString(11, tecdef.getBianzhi());
pstmt.setString(12, tecdef.getInschool());
pstmt.setString(13, tecdef.getDepartment());
pstmt.setString(14, tecdef.getHealth());
pstmt.setString(15, tecdef.getIdentity());
pstmt.setString(16, tecdef.getMarry());
pstmt.setString(17, tecdef.getNativeplace());
pstmt.setDate(18,tecdef.getWorktime());
pstmt.setDate( 19, tecdef.getCometime());
pstmt.setString(20, tecdef.getHomephone());
pstmt.setString(21, tecdef.getPostaddress());
pstmt.setString(22, tecdef.getPostcode());
pstmt.setString(23,tecdef.getEmail());
pstmt.setString(24, tecdef.getRe());
pstmt.setString(25, tecdef.getTeacherid()); pstmt.executeUpdate();
pstmt.close();
connmgr.dropDB2Connection();
conn.close();
}catch(Exception e){
System.out.print("There is wrong with update:"+e.getMessage());
}
}
仔细检查一下吧,注意空格!
仔细检查一下吧,注意空格!
但为什么没修改成功还是不知道
这个是IBM官方网站,给你的连接是DB2出错代码的集合,收藏一下吧~偶用的也是DB2~
赫赫:不是太长了是输入的信息超出了字段定义的长度
变成
int[] updateCounts=pstmt.executeBatch();