有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java准备语句失败

我正在使用一个准备好的语句,它应该(使用SQL和JDBC)将数据插入数据表。我使用的是删除正常工作的数据的方法,但插入的方法不会将任何数据插入数据表,也不会产生错误或警告。什么会导致事先准备好的声明以这种方式失败? 在准备好的语句中插入空值会导致这种情况吗


共 (2) 个答案

  1. # 1 楼答案

    你说的“失败,但不产生错误”是什么意思?那么,你怎么知道它失败了呢?数据是否真的没有被插入?也许你没有提交交易

  2. # 2 楼答案

    解决问题的两种方法

    第一条路:

        Connection con = DriverManager.getConnection(DB_host, DB_UserName, DB_UserPassword);
        con.setAutoCommit(true);
    String sql = "INSERT INTO Users (fName, lastName, userName, password) VALUES (?, ?, ?, ?)";
    PreparedStatement stmt = con.prepareStatement(sql);
    stmt.setString(1, "fName" );
    stmt.setString(2, "lastName" );
    stmt.setString(3, "userName" );
    stmt.setString(4, "password" );
    stmt.executeUpdate();
    

    第二条路:

    Connection con = DriverManager.getConnection(DB_host, DB_UserName, DB_UserPassword);
    String sql = "INSERT INTO Users (fName, lastName, userName, password) VALUES (?, ?, ?, ?)";
    PreparedStatement stmt = con.prepareStatement(sql);
    stmt.setString(1, "fName" );
    stmt.setString(2, "lastName" );
    stmt.setString(3, "userName" );
    stmt.setString(4, "password" );
    stmt.executeUpdate();
    con.commit();
    

    也就是说,当创建连接对象本身时,为其启用autocommit true。因此,它将使更改立即反映到您的数据库中

    否则,在您的事务之后,将连接作为提交,以确保您的事务保存在数据库中