0

我有一个错误,我无法弄清楚为什么会发生这种情况。我在互联网上搜索,但我没有发现任何结论。你能帮我吗 ?我做错了什么?应该如何编写此代码以使此问题不再发生?

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();
    }

    }

例外:

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) 
4

1 回答 1

0

当我使用 CachedRowSet 管理从 MySql 数据库检索的数据时,我也遇到了类似的问题。从那我知道可能会发生此问题的两种情况:-(1)当我们更新数据库表中的主键字段时,特别是在插入表中某些原始数据中已经存在的相同值时,因为我们不能插入相同的值主键多次出现在表中。(2) 当模式不匹配时,例如正在修改的字段大小为 10 char,我们正在尝试写入 11~20 char 值

你能检查以上几点吗?如果您发现其他问题,请分享,因为您尝试保存的数据与数据库表可接受的数据之间可能存在任何类似的冲突

如果您仍然遇到问题,请描述您的 tblFilm 数据库表。

于 2015-11-30T17:43:28.817 回答