web-dev-qa-db-ja.com

PreparedStatementを使用してデータベースに行を挿入する

PreparedStatementを使用してテーブルに行を挿入したい。テーブルは3列(int、String、String)を取得しました。問題は、int列がAUTO_INCREMENTであるため、その変数を空のままにして、データベースにそのジョブを実行させたい(これはidです)。しかし、これを行う方法を見つけていません!

これはMySQLデータベースです。

19
Lucas Arrefelt

これは比較的簡単で、列リストから自動インクリメント列を除外するだけです。

insert into mytbl(str1, str2) values (?, ?)

ステートメントを準備し、2つのパラメーターを設定して、非クエリモードで実行します。

16
dasblinkenlight

Sqlクエリ文字列にStringエントリを入力するだけで、データベースはauto_incrementフィールドに入力します。

String insertSQL = "INSERT INTO MyTable (StrCol1, StrCol2) VALUES (?, ?)";
PreparedStatement preparedStatement = dbConnection.prepareStatement(insertSQL);
preparedStatement.setString(1, "Val 1");
preparedStatement.setString(2, "Val 2");
preparedStatement.executeUpdate();
16
Reimeus

フィールドがすでに自動インクリメントされている場合、他の2つのフィールドだけを入力するだけで十分です。ここに例

String sql = "INSERT INTO mytableName("
    + "fistStringColumnName,"
    + "secondStringColumnName) "
    +  "VALUES(?,?)";

try (PreparedStatement pstmt = connection.prepareStatement(sql)) {

    // Set the values
    pstmt.setString(1, "firstString");
    pstmt.setString(2, "secondString");

    // Insert 
    pstmt.executeUpdate();

} catch (SQLException e) {

} catch (FileNotFoundException e) {

}
5
klebe85