当前位置: 首页 > 知识库问答 >
问题:

如何修复"java.sql.SQLException:自动提交=true时无法调用提交"

国跃
2023-03-14

我正在使用java和mysql,但我无法修复错误。当我将new Farm插入表时,我正面临这些错误......

Java语言sql。SQLException:当autocommit=true时无法调用commit

错误如下

Java语言sql。SQLException:当autocommit=true时无法调用commit

_commandsSQLE_loopSQLException(SQLEparse_commands)
在sun.reflect.SQLEmpl.newSQLException(SQLError.java:865)
在java.lang.reflect.ConnectionIonstructor.new(ConnectionIonstructor.java:423)
在客户端。Mcom.mysql.jdbc.(Mtil.handle)在客户端。Mtil.java:425sun.reflect.(Main.java:123)在客户端。Main.mainmpl.new(Main.java:202)在客户端。Main.main(Main.java:239)com.mysql.jdbc.exceptions.jdbc4。MySQLNonTranentConnectionException:无法调用回滚时,自动提交=true在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)在com.mysql.jdbc.NativeConstructorAccessorIrror.create实例(NativeConstructorAccessorIrror.java:869)在com.mysql.jdbc.委托rror.create实例(委托)在com.mysql.jdbc.Cmpl.commit实例(Cmpl.java:1537)在ain.addonethingUain.java:784NewInstance(Uain.parse)在com. mysql. jdbc。SQLError. createSQLException(SQLException)Main.main_loop(Main. java: 202)在客户端。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;
}

共有2个答案

施俊明
2023-03-14

基本上,当我们编写查询并默认执行它们时,它们会提交它,我们必须指定不提交,并且只有在我指定时才提交。

那就是我们可以这样做

Connection con = DriverManager.getConnection(url,user,password);
con.setAutoCommit(false); 

这将自动提交设置为不自动提交。

沈永贞
2023-03-14

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

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

现在,将在以下位置提交一组语句(事务):

connection.commit();
 类似资料:
  • 本文向大家介绍postgresql 如何关闭自动提交,包括了postgresql 如何关闭自动提交的使用技巧和注意事项,需要的朋友参考一下 postgresql中默认是自动提交的 查看是否是自动提交: 关闭自动提交: 另一种方式就在会话开始的时候以begin开始相当于关闭了自动提交,以end或者commit结束就可以了 补充:pg(hgdb)默认事务自动提交 默认情况下,AUTOCOMMIT(自动

  • 问题内容: 我一直想知道为什么JDBC API提供了自动提交模式()。似乎很吸引人的麻烦只是诱使人们陷入麻烦。我的理论是,仅将其添加到JDBC是为了简化希望创建使用JDBC编辑和运行SQL的工具的供应商的生活。是否有其他原因打开自动提交,还是总是错误? 问题答案: 不幸的是,使用自动提交是特定于数据库的(事务行为也是如此)。我认为,如果您没有全局的程序化交易策略,自动提交可能比仅希望每个人都正确关

  • 问题内容: 我最近一直在使用sqlite4java库。我想我已经弄清楚了。唯一令我困扰的是,我不知道如何使用该库关闭自动提交。谁能帮忙吗?一个代码示例将不胜感激。 在此先感谢Boro 问题答案: Jefromi和king_nak是正确的-您只需要发出开始和结束事务的SQL语句即可。

  • 我正在研究Java和mysql,但我无法修复错误。当我将新农场主插入到表中时,我正面临着这些错误... java.sql.sqlexception:AutoCommit=true时无法调用commit 错误如下 java.sql.sqlexception:AutoCommit=true时无法调用commit 在com.mysql.jdbc.sqlerror.createsqlexception(s

  • 我正在阅读https://ci.apache.org/projects/flink/flink-docs-release-1.13/docs/connectors/datastream/kafka/#kafka-消费者补偿提交行为配置 它说: 启用检查点:如果启用了检查点,Flink Kafka使用者将在检查点完成时提交存储在检查点状态中的偏移量。这确保了Kafka代理中提交的偏移量与检查点状态中