Java 我在使用CachedRowSet时出错
我有一个错误,我不明白为什么会发生这种情况。我在网上搜索,但没有找到任何结论。你能帮我吗?我做错了什么?应该如何编写这段代码,以使此问题不再发生Java 我在使用CachedRowSet时出错,java,sql-server,jdbc,cachedrowset,Java,Sql Server,Jdbc,Cachedrowset,我有一个错误,我不明白为什么会发生这种情况。我在网上搜索,但没有找到任何结论。你能帮我吗?我做错了什么?应该如何编写这段代码,以使此问题不再发生 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.sql.RowSetWriter; im
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.RowSetWriter;
import javax.sql.rowset.CachedRowSet;
import javax.sql.rowset.RowSetProvider;
public class Testing {
void example() {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost:1433;databaseName=Movies; integratedSecurity=true";
Connection connect = DriverManager.getConnection(url);
Statement s = connect.createStatement();
ResultSet rs = s.executeQuery("select filmname from tblFilm where filmRuntimeMinutes <100");
CachedRowSet cached = RowSetProvider.newFactory().createCachedRowSet();
cached.populate(rs); // populam cached row set cu datele obtinute din ResultSet
cached.moveToInsertRow(); //mutam cursorul pentru a permite modificari
cached.updateString(1, "Ionut Asaftei"); //aplicam modificarea pe coloana dorita
cached.insertRow(); //are ca efect introducerea noii inregistrari doar in row set (nu se conecteaza inca la baza de date
cached.moveToCurrentRow(); // muta cursorul pe ultima pozitie retinuta /amintita / curenta
cached.setTableName("tblFilm");
cached.acceptChanges(connect); //modificarile sunt salvate pe server
while(cached.next()) {
System.out.println(cached.getString(1));
}
}catch(ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Testing obj = new Testing();
obj.example();
}
}
在使用CachedRowSet管理从MySql数据库检索的数据时,我也遇到了类似的问题。 由此,我了解了两种可能出现此问题的情况:- 1当我们更新数据库表中的主键字段时,特别是插入相同值时 它已经存在于一些原始in表中,因为我们不能多次插入相同的主键 时间在桌子上。 2当模式不匹配时,如正在修改的字段大小为10个字符,我们正在尝试 写入11~20个字符的值 你能检查一下以上几点吗?如果您发现其他问题,请与我们分享,因为它可能是 您试图保存的数据与数据库表中可接受的数据之间的任何类似冲突
如果您仍然面临问题,请描述您的tblFilm数据库表。执行printStackTrace后,这就是我得到的:javax.sql.rowset.spi.SyncProviderException:1在com.sun.rowset.internal.CachedRowSetWriter.writedaunknown上同步时发生冲突,源代码为com.sun.rowset.CachedRowSetImpl.acceptChangesUnknown源代码为com.sun.rowset.CachedRowSetImpl.acceptChangesUnknown源代码为com.sun.sun.CachedRowSetImpl.CachedRowSetImpl.acceptchangesunknows源代码Testing.mainTesting.java:55
javax.sql.rowset.spi.SyncProviderException: 1 conflicts while synchronizing
at com.sun.rowset.internal.CachedRowSetWriter.writeData(Unknown Source)
at com.sun.rowset.CachedRowSetImpl.acceptChanges(Unknown Source)
at com.sun.rowset.CachedRowSetImpl.acceptChanges(Unknown Source)
at Testing.example(Testing.java:31) at Testing.main(Testing.java:55)