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)