准备好的陈述失败

时间:2009-07-28 22:27:26

标签: java jdbc prepared-statement

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

2 个答案:

答案 0 :(得分:2)

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

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

在ur事务之后,将连接设置为commit,以确保将事务保存在数据库中