gpt4 book ai didi

java - 如何修复 "java.sql.SQLException: Can' 当 autocommit=true 时调用提交”

转载 作者:行者123 更新时间:2023-11-29 09:41:41 24 4
gpt4 key购买 nike

我正在处理 java 和 mysql,但无法修复错误。当我将新农民插入表中时,我遇到这些错误...

java.sql.SQLException: Can't call commit when autocommit=true

错误如下

java.sql.SQLException: Can't call commit when autocommit=true

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:869)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:865)
at com.mysql.jdbc.ConnectionImpl.commit(ConnectionImpl.java:1537)
at client.Main.addonething(Main.java:784) at client.Main.parse_commands(Main.java:123) at client.Main.main_loop(Main.java:202) at client.Main.main(Main.java:239) com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Can't call rollback when autocommit=true at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) at com.mysql.jdbc.Util.getInstance(Util.java:408) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861) at com.mysql.jdbc.ConnectionImpl.rollback(ConnectionImpl.java:4560) at client.Main.addonething(Main.java:795) at client.Main.parse_commands(Main.java:123) at client.Main.main_loop(Main.java:202) at client.Main.main(Main.java:239)

这是数据库连接代码

 public static void addonething(String query, DBConnection dbConnection){
Statement myStmt;
try {
myStmt = dbConnection.getConn().createStatement();
int swichA = 0;
int swichB = 0;
myStmt.execute(query);

System.out.println("To commit the data enter 1");
Scanner in = new Scanner(System.in);
swichB = in.nextInt();
if(swichA != -1 && swichB == 1){
System.out.println();
dbConnection.getConn().commit();
}
else{
System.out.println("it came hear3");
dbConnection.getConn().rollback();
}

} catch (SQLException e) {
System.out.println("it came hear4");
e.printStackTrace();
try {
dbConnection.getConn().rollback();
} catch (SQLException e1) {
System.out.println("it came hear5");
e1.printStackTrace();
}
}}

下面是插入方法

public static String frQuery(String second_part){
String data = get_data_from_commands(second_part);
String[] tokens = data.split(",");
String queryf = String.format("insert into farmers" + "
(Name, lastname, Address, zipcode, city, phones, mails)" + "values
('%s','%s','%s','%s','%s','%s','%s')",tokens[0],tokens[1],tokens[2],
tokens[3],tokens[4],tokens[5], tokens[6]);

return queryf;
}

最佳答案

您可以使用以下代码禁用自动提交:

 //Note : This will implicitly commit the active transaction and create a new one
connection.setAutoCommit(false);

现在将提交语句集(事务):

connection.commit();

关于java - 如何修复 "java.sql.SQLException: Can' 当 autocommit=true 时调用提交”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56498564/

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