To insert rows into a database using JDBC, you typically use the executeUpdate(String sql) method of a Statement or PreparedStatement object.
Here are the two primary ways to do it:
1. Using PreparedStatement (Recommended)
This is the standard approach because it prevents SQL Injection and is more efficient for repeated inserts.
package org.kodejava.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class InsertRecordExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/kodejava";
String user = "root";
String password = "password";
String sql = "INSERT INTO users (username, email) VALUES (?, ?)";
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
// Set the values for the placeholders (?)
pstmt.setString(1, "john_doe");
pstmt.setString(2, "[email protected]");
// executeUpdate returns the number of rows affected
int rowsInserted = pstmt.executeUpdate();
if (rowsInserted > 0) {
System.out.println("A new user was inserted successfully!");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2. Using Statement
Use this only for simple, static SQL queries where no user input is involved.
// ... existing code ...
try (Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement()) {
String sql = "INSERT INTO users (username, email) VALUES ('jane_doe', '[email protected]')";
int rows = stmt.executeUpdate(sql);
System.out.println("Rows affected: " + rows);
} catch (SQLException e) {
e.printStackTrace();
}
// ... existing code ...
Key Takeaways:
executeUpdate(): UnlikeexecuteQuery()(which returns aResultSet),executeUpdate()returns anintrepresenting how many rows were added, changed, or deleted.- Try-with-resources: Always wrap your
Connection,Statement, orPreparedStatementin a try-with-resources block to ensure they are closed automatically, even if an error occurs. - Placeholders: In a
PreparedStatement, indices for?parameters start at 1.
