"update SPXX set SP_NAME=? where SP_ID=?"这句不就行了嘛 干嘛还要弄得那么麻烦.我更晕.我刚注意到.居然也是做跟税务相关的..
用pstmt,pstmt1应该是对的, pstmt=conn.prepareStatement("delete from SPXX where SP_ID=?"); pstmt.setString(1,SP_ID);pstmt1=conn.prepareStatement("insert into SPXX(SP_NAME,SP_ID) values(?,?)" ); pstmt1.setString(1,SP_NAME); pstmt1.setString(2,SP_ID);pstmt.executeUpdate(); pstmt1.executeUpdate(); 不过楼主如果用oracle数据库,应该用 try{ conn.setAutoCommit(false); pstmt=conn.prepareStatement("delete from SPXX where SP_ID=?"); pstmt.setString(1,SP_ID); pstmt.addBatch();pstmt1=conn.prepareStatement("insert into SPXX(SP_NAME,SP_ID) values(?,?)" ); pstmt1.setString(1,SP_NAME); pstmt1.setString(2,SP_ID); pstmt1.addBatch();pstmt.executeBatch(); pstmt1.executeBatch(); conn.commit(); }catch(...){ conn.rollback(); }finally{ 关闭... }
要是用批操作的话pstmt.execute("delete from SPXX where SP_ID=?"); pstmt.setString(1,SP_ID); pstmt.addBatch();pstmt.execute("insert into SPXX(SP_NAME,SP_ID) values(?,?)" ); pstmt.setString(1,SP_NAME); pstmt.setString(2,SP_ID); pstmt.addBatch();pstmt.executeBatch();
肯定是oracle.做税务的其他数据库撑不起.
本应该用 update的但是...我说的不算 还是要先delete 再 insert
呵呵! 是sybase本来就速度慢 所以修改数据全部是这样实现的
那就用 pstmt.execute("delete from SPXX where SP_ID=?"); pstmt.setString(1,SP_ID); pstmt.executeUpdate(); //最好加上1句 pstmt.close(); 然后 pstmt.execute("insert into SPXX(SP_NAME,SP_ID) values(?,?)" ); pstmt.setString(1,SP_NAME); pstmt.setString(2,SP_ID); pstmt.executeUpdate();
干嘛还要弄得那么麻烦.我更晕.我刚注意到.居然也是做跟税务相关的..
pstmt=conn.prepareStatement("delete from SPXX where SP_ID=?");
pstmt.setString(1,SP_ID);pstmt1=conn.prepareStatement("insert into SPXX(SP_NAME,SP_ID) values(?,?)" );
pstmt1.setString(1,SP_NAME);
pstmt1.setString(2,SP_ID);pstmt.executeUpdate();
pstmt1.executeUpdate();
不过楼主如果用oracle数据库,应该用
try{
conn.setAutoCommit(false);
pstmt=conn.prepareStatement("delete from SPXX where SP_ID=?");
pstmt.setString(1,SP_ID);
pstmt.addBatch();pstmt1=conn.prepareStatement("insert into SPXX(SP_NAME,SP_ID) values(?,?)" );
pstmt1.setString(1,SP_NAME);
pstmt1.setString(2,SP_ID);
pstmt1.addBatch();pstmt.executeBatch();
pstmt1.executeBatch();
conn.commit();
}catch(...){
conn.rollback();
}finally{
关闭...
}
pstmt.setString(1,SP_ID);
pstmt.addBatch();pstmt.execute("insert into SPXX(SP_NAME,SP_ID) values(?,?)" );
pstmt.setString(1,SP_NAME);
pstmt.setString(2,SP_ID);
pstmt.addBatch();pstmt.executeBatch();
所以修改数据全部是这样实现的
pstmt.execute("delete from SPXX where SP_ID=?");
pstmt.setString(1,SP_ID);
pstmt.executeUpdate();
//最好加上1句
pstmt.close();
然后
pstmt.execute("insert into SPXX(SP_NAME,SP_ID) values(?,?)" );
pstmt.setString(1,SP_NAME);
pstmt.setString(2,SP_ID);
pstmt.executeUpdate();
那个省的税局项目?居然拿Sybase做数据库.
可惜mysql就不支持,还要设置什么很麻烦.
另外,楼上的,只定义一个PreparedStatement对象好吗?
我一直没这样做~~觉得还是定义两个对象的好
我想你是想问一个PreparedStatement实例可否执行多条SQL语句吧,应该可以的,不用像那样定义两个对象,你自己写个小程序一试不就知道了
恩!是的,我就是这个意思不知道行不行 所以才来发贴子问问地
无非就是游标限制而已.
多定义PreparedStatement是没意义的.
但java.sql.statement stmt = conn.createStatement();// 就不一定了不同数据库的JDBC可能不支持也说不定这方面得查看类库了解相关信息