-
Notifications
You must be signed in to change notification settings - Fork 2
Introduction to JDBC
landawn edited this page Jul 27, 2019
·
1 revision
JDBC is a Java database connectivity technology. Here is a brief tutorial and a simple sample of programming with JDBC (This sample just show you how Jdbc works. The below code can be simplified a lot in a real product development):
public void test_jdbc() throws Exception {
// Download the specific jdbc driver from web site. Here we use H2 as a sample.
final String driver = "org.h2.Driver";
final String url = "jdbc:h2:tcp://localhost/~/codes";
final String user = "SA";
final String password = "";
DriverManager.registerDriver((Driver) N.forClass(driver).newInstance());
// insert a record into database
final String sql_insert = "INSERT INTO account (gui, first_name, last_name, last_update_time, create_time) VALUES (?, ?, ?, ?, ?)";
long id = 0;
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
// get a connection
conn = DriverManager.getConnection(url, user, password);
// prepare the statement by sql.
stmt = conn.prepareStatement(sql_insert, Statement.RETURN_GENERATED_KEYS);
// set parameters
int parameterIndex = 1;
stmt.setString(parameterIndex++, N.uuid());
stmt.setString(parameterIndex++, "Jack");
stmt.setString(parameterIndex++, "Ye");
stmt.setTimestamp(parameterIndex++, N.currentTimestamp());
stmt.setTimestamp(parameterIndex++, N.currentTimestamp());
stmt.execute();
rs = stmt.getGeneratedKeys();
if (rs.next()) {
id = rs.getLong(1);
}
} finally {
// close ResultSet, PreparedStatement and Connection in finally block.
closeQuietly(rs, stmt, conn);
}
// Read the inserted account from database
final String sql_getById = "SELECT id AS \"id\", gui AS \"gui\", first_name AS \"firstName\", last_name AS \"lastName\" FROM account WHERE id = ?";
Account dbAccount = null;
conn = null;
stmt = null;
rs = null;
try {
conn = DriverManager.getConnection(url, user, password);
stmt = conn.prepareStatement(sql_getById);
stmt.setLong(1, id);
rs = stmt.executeQuery();
if (rs.next()) {
dbAccount = new Account();
dbAccount.setId(rs.getLong("id"));
dbAccount.setGUI(rs.getString("firstName"));
dbAccount.setFirstName(rs.getString("firstName"));
dbAccount.setLastName(rs.getString("lastName"));
}
} finally {
closeQuietly(rs, stmt, conn);
}
// Delete the inserted account from database
final String delete_getById = "DELETE FROM account WHERE id = ?";
conn = null;
stmt = null;
rs = null;
try {
conn = DriverManager.getConnection(url, user, password);
stmt = conn.prepareStatement(delete_getById);
stmt.setLong(1, id);
stmt.executeUpdate();
} finally {
closeQuietly(null, stmt, conn);
}
}
private void closeQuietly(ResultSet rs, PreparedStatement stmt, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (Throwable e) {
// ignore.
}
}
if (stmt != null) {
try {
stmt.close();
} catch (Throwable e) {
// ignore.
}
}
if (conn != null) {
try {
conn.close();
} catch (Throwable e) {
// ignore.
}
}
}
- How to Learn/Use the APIs correctly and efficiently
- Programming in RDBMS with Jdbc/PreparedQuery/SQLExecutor/Mapper/Dao
- JSON/XML Parser
- SQLite Executor
- SQL Executor
- SQL Builder
- SQL Mapper
- DataSet
- JdbcUtil/CSVUtil
- IOUtil
- PrimitiveList
- Profiler
- Http Client
- Web Services
- Programming in Android
- Parse/Analyze/Operate (Big) Data (on N servers in parallel)
- Code Generation
- Introduction to JDBC
- Naming Convention
- Partitioning/Distribution
- SQL/NoSQL
- Model/Entity