问题描述
源代码:try{Connectioncon=DriverManager.getConnection("jdbc:odbc:db1","root","");System.out.println("SuccesssLinkedDataBase");Statementstm1=con.createStatement();stm1.addBatch("insertintopetvalues('S1','Zl','dog','f',null,null)");stm1.addBatch("updatepetsetpet.name='S0'wherepet.name='S1'");stm1.executeBatch();stm1.executeBatch();}catch(Exceptionex){ex.printStackTrace();}sun.jdbc.odbc.JdbcOdbcBatchUpdateException:[MySQL][ODBC5.1Driver][mysqld-5.1.40-community]YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'updatepetsetpet.name='S0'wherepet.name='S1''atline2atsun.jdbc.odbc.JdbcOdbcStatement.executeBatchUpdate(UnknownSource)atsun.jdbc.odbc.JdbcOdbcStatement.executeBatch(UnknownSource)atcn.test.ExecuteBatchTest.main(ExecuteBatchTest.java:46)找了好久还是没答案。是数据库驱动问题?数据库?头疼啊。。。。。。。
解决方案
解决方案二:
你把这句stm1.addBatch("updatepetsetpet.name='S0'wherepet.name='S1'");先去掉执行一次看看能不能执行
解决方案三:
YouhaveanerrorinyourSQLsyntax你的SQL语句有错误updatepetsetpet.name='S0'wherepet.name='S1'去掉pet.再看看或者在pet后面加个别名再用别名.name
解决方案四:
SQL语句都没问题就是要去掉一个stm1.addBatch("****");就是只有在加一个的情况下才能运行你们以前用过Statement.addBatch()方法没?用的是什么数据库?
解决方案五:
jdk1.5以后的版本才支持批处理,检查下你的jdk版本。
解决方案六:
stm1.executeBatch();stm1.executeBatch();为什么要执行两次呢????
解决方案七:
发帖的时候写错的不影响今天换了个SQlServer2000可以用batch方法了(说明应该是驱动问题)虽然命令可以执行也加进数据库了但还是有异常:SQLAttempttoproduceaResultSetfromexecuteBatch且executeBatch()方法没有返回结果另外就是用PreparedStatement的pstmt.setDate(9,null);方法抛出异常:没有执行可选特性网上找了有的说是驱动问题换驱动桥接方式
解决方案八:
不懂
解决方案九:
batch就是批处理,你这叫什么批处理?我给你写个例子你看看:publicclassTest{publicstaticfinalintBATCH_SIZE=100;publicstaticvoidmain(String[]args)throwsSQLException{Stringsql="updatesome_tablesetcolumn1=?,column2=?wherecondition=?";Connectionconn=null;PreparedStatementps=null;intcount=0;conn.setAutoCommit(false);ps=conn.prepareStatement(sql);for(inti=0;i<1200;i++){ps.setInt(1,i);ps.setLong(2,i*i);ps.setInt(3,i);ps.addBatch();count++;if(count==BATCH_SIZE){ps.executeBatch();count=0;}}if(count>0){ps.executeBatch();}conn.commit();}}
当时这个需求需要根据计算结果更新8000多条信息,不用batch的话执行了3分钟,用了batch之后只需要18秒
解决方案十:
现在一次性加几百条都没问题但还是有异常抛出哦
解决方案十一:
stm1.executeBatch();为什么要执行2次?
解决方案十二:
怎么没见Class.format("sun.jdbc.odbc.JdbcOdbcDriver");?