Reputation: 3929
I want to insert a row into a table using PreparedStatement. The table got 3 columns(int, String, String). The thing is that the int column is AUTO_INCREMENT, so I want to leave that variable empty and let the database do that job (It's an id). Haven't found out how to do this though!
It's an MySQL database.
Upvotes: 22
Views: 88996
Reputation: 286
If the field is already autoincrement, it is enough to populate just the other two fields. Here an example
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) {
}
Upvotes: 5
Reputation: 159864
Just provide the String entries in your sql query string and the database will populate the auto_increment field:
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();
Upvotes: 20
Reputation: 727047
That's relatively simple, just leave out the autoincrement column from the column list:
insert into mytbl(str1, str2) values (?, ?)
Prepare the statement, set the two parameters, and execute in non query mode.
Upvotes: 19