加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
建立连接 (Connection)
方法 | 描述 |
---|---|
createStatement() | 创建向数据库发送 sql 的 statement 对象 |
prepareStatement(sql) | 创建向数据库发送预编译 sql 的 PrepareSatement 对象 |
prepareCall(sql) | 创建执行存储过程的 callableStatement 对象 |
setAutoCommit(boolean autoCommit) | 设置事务是否自动提交 |
commit() | 在链接上提交事务 |
rollback() | 在此链接上回滚事务 |
Connection conn = DriverManager.getConnection(url, username, password);
执行 SQL 语句(Statement / PreperedStatement)
- Statement
方法 | 含义 |
---|---|
executeQuery(String sql) | 用于向数据发送查询语句 |
executeUpdate(String sql) | 用于向数据库发送 insert、update 或 delete 语句 |
execute(String sql) | 用于向数据库发送任意 sql 语句 |
addBatch(String sql) | 把多条 sql 语句放到一个批处理中 |
executeBatch() | 向数据库发送一批 sql 语句执行 |
// 3.获取用于向数据库发送sql语句的statement
Statement st = conn.createStatement();
// 4.向数据库发sql
String sql = "select id,name,password,email,birthday from users";
st.executeQuery(sql);
- PreperedStatement
String sql = "select * from users where name=?";
//3.获取用于向数据库发送sql语句的Preperedstatement
PreperedStatement st = conn.preparedStatement(sql);//在此次传入,进行预编译
st.setString(1, name);
//4.向数据库发sql
st.executeQuery();//在这里不需要传入sql
获取结果(ResultSet)
Jdbc 程序中的 ResultSet 用于代表 Sql 语句的执行结果。Resultset 封装执行结果时,采用的类似于表格的方式,ResultSet 对象维护了一个指向表格数据行的游标,初始的时候,游标在第一行之前,调用 ResultSet.next() 方法,可以使游标指向具体的数据行,进行调用方法获取该行的数据。
- 获取行
ResultSet 提供了对结果集进行滚动的方法:
next():移动到下一行
Previous():移动到前一行
absolute(int row):移动到指定行
beforeFirst():移动 resultSet 的最前面
afterLast() :移动到 resultSet 的最后面 - 获取值
ResultSet 既然用于封装执行结果的,所以该对象提供的都是用于获取数据的 get 方法:- 获取任意类型的数据
getObject(int index)
getObject(string columnName) - 获取指定类型的数据,例如:
getString(int index)
getString(String columnName)
- 获取任意类型的数据
释放资源
Jdbc 程序运行完后,切记要释放程序在运行过程中,创建的那些与数据库进行交互的对象,这些对象通常是 ResultSet, Statement 和 Connection 对象。
注意:为确保资源释放代码能运行,资源释放代码也一定要放在 finally 语句中。
String url = "jdbc:mysql://localhost:3306/demo";
String username = "root";
String password = "123456";
Connection conn = null;
PreperedStatement st = null;
ResultSet rs = null;
try{
// 1.加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 2.获取与数据库的链接
conn = DriverManager.getConnection(url, username, password);
// 3.执行SQL语句
String sql = "select * from users where name=? and password=?";
st = conn.preparedStatement(sql);
st.setString(1, "zhangsan");
st.setString(2, "123");
// 4. 获取结果
rs = st.executeQuery();
//循环取出(id)
while(rs.next())
{
String id=rs.getString(1);//1代表数据库中表的列数,id在第一列也可以("id")!!!
System.out.println(id+" ");
}
}catch (Exception e){
log.err(e);
}finally {
// 5.关闭链接,释放资源
if(rs!=null){
try{
rs.close();
}catch (Exception e) {
e.printStackTrace();
}
rs = null;
}
if(st!=null){
try{
st.close();
}catch (Exception e) {
e.printStackTrace();
}
}
if(conn!=null){
try{
conn.close();
}catch (Exception e) {
e.printStackTrace();
}
}
}