0

(SQLとJDBCを使用して)dataTableにデータを挿入する必要がある準備されたステートメントを使用しています。正常に機能するデータを削除するものを使用していますが、挿入するものはデータテーブルにデータを挿入しておらず、エラーや警告を生成しません。プリペアドステートメントがこのように失敗する原因は何ですか?プリペアドステートメントにnull値を挿入すると、これが発生する可能性がありますか?

4

2 に答える 2

2

「失敗してもエラーが発生しない」とはどういう意味ですか?それでは失敗していることをどうやって知ることができますか?データは実際には挿入されていませんか?おそらくあなたはトランザクションをコミットしていませんか?

于 2009-07-28T22:31:12.070 に答える
0

問題を解決する2つの方法。

1番目の方法:

    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();

2番目の方法:

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();

つまり、接続オブジェクト自体を作成しているときに、自動コミットを有効にします。したがって、変更はすぐにurデータベースに反映されます。

それ以外の場合、トランザクションがデータベースに保存されるように、トランザクションをコミットとして接続します。

于 2013-02-04T11:29:54.487 に答える