gpt4 book ai didi

java - CachedRowset acceptChanges 在插入操作后不起作用

转载 作者:可可西里 更新时间:2023-11-01 08:47:07 24 4
gpt4 key购买 nike

我正在使用 MySQL 数据库,我有一个包含 2 列的 Employee 表:Id(Int;主键)和 Name(String ).我已经编写了一些代码来向 Employee 表中插入一行,但是 acceptChanges 不起作用并且代码在 acceptChanges 处停止。代码如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import javax.sql.rowset.CachedRowSet;
import javax.sql.rowset.RowSetFactory;
import javax.sql.rowset.RowSetProvider;

public class InsertSynchronizer {

static CachedRowSet crs = null;

public static void main(String[] args) {

try {
Class.forName("com.mysql.jdbc.Driver");
Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/", "root", "");
c.setAutoCommit(false);
RowSetFactory myRowSetFactory = null;
myRowSetFactory = RowSetProvider.newFactory();
crs = myRowSetFactory.createCachedRowSet();
crs.setUrl("jdbc:mysql://localhost:3306/test");
crs.setUsername("root");
crs.setPassword("");
crs.setConcurrency(CachedRowSet.CONCUR_UPDATABLE);
crs.setCommand("select * from employee");
crs.execute();
while (crs.next()) {
System.out.println(crs.getString("Name"));
}

// Inserting rows
crs.moveToInsertRow();
crs.updateInt("Id", 5);
crs.updateString("Name", "E");
crs.insertRow();

//Thread.sleep(60000);
crs.acceptChanges(c); // Updating Data Sources

} catch (Exception e) {
e.printStackTrace();
}
}
}

最佳答案

必须在 crs.insertRow() 之后和 crs.acceptChanges(c) 之前添加语句 crs.moveToCurrentRow()/p>

例如:

 // Inserting rows
crs.moveToInsertRow();
crs.updateInt("Id", 5);
crs.updateString("Name", "E");
crs.insertRow();
crs.moveToCurrentRow(); // NEW STATEMENT
crs.acceptChanges(c); // Updating Data Sources

欲了解更多信息,请访问:http://docs.oracle.com/javase/tutorial/jdbc/basics/cachedrowset.html#inserting-and-deleting-rows

关于java - CachedRowset acceptChanges 在插入操作后不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25705278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com