当前位置: 技术问答>java相关
奇怪的数据库问题,我快被折磨疯了,谁来救救我????
来源: 互联网 发布时间:2015-08-13
本文导语: 我在一个jsp页面中对数据库(oracle)中的一个表进行一如下操作: 1.删除该表中所有记录; 2.删除与该表对应的序列; 3.重新建立与该表对应的序列; 4.向该表中重新插入新的记录。 执行时,前三步都正确,第4步出...
我在一个jsp页面中对数据库(oracle)中的一个表进行一如下操作:
1.删除该表中所有记录;
2.删除与该表对应的序列;
3.重新建立与该表对应的序列;
4.向该表中重新插入新的记录。
执行时,前三步都正确,第4步出现问题。当向该表插入同一个记录时,如果该表原来是一个空表时,这4步都执行正确;如果该表原来存在一些记录时,可以正确执行前3步,第4步时oracle报错“插入的值对于列过大”。
我为这个问题折腾了很长时间,不知错在哪里?请大家帮帮忙。
源程序如下:
....
Statement Stateupdateall = Connupdateall.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
....
String str_update = request.getQueryString()!=null?request.getQueryString():"1";
String str_structable = "UDR_STRUCTABLE" + str_update;
String del_strucsequence = "DROP SEQUENCE "VLAB"."UDR_STRUCTABLE" + str_update + "_INDEX"";
String del_structable = "DELETE FROM " + str_structable + " WHERE INFO_ID IN (SELECT INFO_ID FROM " + str_structable + ")";
String str_createsequence = "CREATE SEQUENCE "VLAB"."UDR_STRUCTABLE" + str_update + "_INDEX" INCREMENT BY 1 START WITH 1 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE NOCACHE ORDER";
Stateupdateall.executeUpdate(del_structable);
Stateupdateall.executeUpdate(del_strucsequence);
Stateupdateall.executeUpdate(str_createsequence);
....
String str_selectindex = "SELECT UDR_STRUCTABLE" + str_update + "_INDEX.nextval FROM dual";
ResultSet UDR_strucindex = Stateupdateall.executeQuery(str_selectindex);
boolean UDR_strucindex_isEmpty = !UDR_strucindex.next();
String str_strucindex = UDR_strucindex.getString(1);
int UDR_strucid = Integer.parseInt(str_strucindex);
if (UDR_strucindex!=null)
{ try{UDR_strucindex.close();}
catch(Exception ignore){};
}
String str_insertdetail = "INSERT INTO "+str_structable+" VALUES ("+UDR_strucid+",'"+str_detailinfo[0]+"','"+str_detailinfo[1]+"','"+str_detailinfo[2]+"',"+str_detailinfo[3]+",'"+str_detailinfo[4]+"','"+str_detailinfo[5]+"','"+str_detailinfo[6]+"',"+str_detailinfo[7]+",'"+str_detailinfo[8]+"','','"+str_detailinfo[9]+"')";//str_detailinfo在前面已定义好;
Stateupdateall.executeUpdate(str_insertdetail);//就是这句执行时报错;
....
1.删除该表中所有记录;
2.删除与该表对应的序列;
3.重新建立与该表对应的序列;
4.向该表中重新插入新的记录。
执行时,前三步都正确,第4步出现问题。当向该表插入同一个记录时,如果该表原来是一个空表时,这4步都执行正确;如果该表原来存在一些记录时,可以正确执行前3步,第4步时oracle报错“插入的值对于列过大”。
我为这个问题折腾了很长时间,不知错在哪里?请大家帮帮忙。
源程序如下:
....
Statement Stateupdateall = Connupdateall.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
....
String str_update = request.getQueryString()!=null?request.getQueryString():"1";
String str_structable = "UDR_STRUCTABLE" + str_update;
String del_strucsequence = "DROP SEQUENCE "VLAB"."UDR_STRUCTABLE" + str_update + "_INDEX"";
String del_structable = "DELETE FROM " + str_structable + " WHERE INFO_ID IN (SELECT INFO_ID FROM " + str_structable + ")";
String str_createsequence = "CREATE SEQUENCE "VLAB"."UDR_STRUCTABLE" + str_update + "_INDEX" INCREMENT BY 1 START WITH 1 MAXVALUE 1.0E28 MINVALUE 1 NOCYCLE NOCACHE ORDER";
Stateupdateall.executeUpdate(del_structable);
Stateupdateall.executeUpdate(del_strucsequence);
Stateupdateall.executeUpdate(str_createsequence);
....
String str_selectindex = "SELECT UDR_STRUCTABLE" + str_update + "_INDEX.nextval FROM dual";
ResultSet UDR_strucindex = Stateupdateall.executeQuery(str_selectindex);
boolean UDR_strucindex_isEmpty = !UDR_strucindex.next();
String str_strucindex = UDR_strucindex.getString(1);
int UDR_strucid = Integer.parseInt(str_strucindex);
if (UDR_strucindex!=null)
{ try{UDR_strucindex.close();}
catch(Exception ignore){};
}
String str_insertdetail = "INSERT INTO "+str_structable+" VALUES ("+UDR_strucid+",'"+str_detailinfo[0]+"','"+str_detailinfo[1]+"','"+str_detailinfo[2]+"',"+str_detailinfo[3]+",'"+str_detailinfo[4]+"','"+str_detailinfo[5]+"','"+str_detailinfo[6]+"',"+str_detailinfo[7]+",'"+str_detailinfo[8]+"','','"+str_detailinfo[9]+"')";//str_detailinfo在前面已定义好;
Stateupdateall.executeUpdate(str_insertdetail);//就是这句执行时报错;
....
|
你可以试试把运行过程中的所有SQL语句都显示出来,然后在SQL*PLUS中运行一遍看看哪出的错。
|
你看看数据库中的数据的范围是否小了,然后再看看是否你的数据库中的字段数目太少了,追好的方法是没走一步都运行一下,你就知道那里错误了,还有数据库中的字段取值范围是否为空
|
插入的值对于列过大
字段超长
字段超长
|
是不是关键字重复了???
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。