0

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

4

2 回答 2

2

“失败,但不产生错误”是什么意思?那么你怎么知道它失败了 - 实际上没有插入数据?也许你没有提交交易?

于 2009-07-28T22:31:12.070 回答
0

两种方法来解决你的问题。

第一种方式:

    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。因此,它会使更改立即反映到您的数据库中。

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

于 2013-02-04T11:29:54.487 回答