我有两个与相同代码相关的问题:
CachedRowSet cachedRow = new CachedRowSetImpl();
cachedRow.setUrl("jdbc:mysql://localhost:3306/test");
cachedRow.setUsername("root");
cachedRow.setPassword("StackOverKindOfThing");
cachedRow.setCommand("SELECT * FROM books");
cachedRow.execute();
int [] arrayKey = {1};
//cachedRow.setKeyColumns(arrayKey); // I can even omit this line and it works anyway;
cachedRow.next();
cachedRow.updateString(2, "ball");
cachedRow.updateRow();
cachedRow.acceptChanges();//it works with cachedRow.acceptChanges(con) where con
//has been initialized and has been set on setAutoCommit(false);
这是我通过使用.setUrl(“url”)设置的CachedRowSet获得的异常;
at CachedThingSet.main(CachedThingSet.java:31)
javax.sql.rowset.spi.SyncProviderException: Can't call commit when autocommit=true
1)我想知道为什么我可以将数据插入到数据库中,即使tutorial说它不可能(setKeyColumn()
方法已被注释掉):
设置关键列
如果你要对crs对象进行任何更新并想要那些 保存在数据库中的更新,您必须再设置一个 信息:关键栏目。
为什么我必须与autocommit(false)
建立连接才能使用CachedRowSet
(更新一行),否则我会得到SyncProviderException: can't call commit when autocommit=true
无论如何我可以设置从setUrl("url");
获得的连接,而不使用acceptChanges(con)
其中con是另一个与autocommit(false)
的连接集