Java 中 JDBC 的使用详解

加载数据库驱动

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();
    }
  }
}
上一篇:JDBC分页管理(MySQL)


下一篇:JDBC编程,SQL注入与连接池