21

PreparedStatement を使用してテーブルに行を挿入したいと考えています。テーブルには 3 つの列 (int、String、String) があります。問題は、int列がAUTO_INCREMENTであるため、その変数を空のままにして、データベースにその仕事を任せたいということです(これはIDです)。ただし、これを行う方法がわかりませんでした!

MySQLデータベースです。

4

3 に答える 3

18

SQL クエリ文字列に文字列エントリを指定するだけで、データベースは 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();
于 2012-08-04T00:29:53.700 に答える
18

これは比較的単純です。列リストから autoincrement 列を除外するだけです。

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

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

于 2012-08-04T00:30:16.377 に答える
5

フィールドがすでに自動インクリメントされている場合は、他の 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) {

}
于 2012-08-04T00:35:48.493 に答える