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