欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > JDBC指南

JDBC指南

2025/5/20 6:16:53 来源:https://blog.csdn.net/bit_10/article/details/148072047  浏览:    关键词:JDBC指南

所谓的JDBC,就是使用Java代码来操作所有的关系型数据库。JDBC本质,是一组操作数据库的接口。各厂商实现的jar包就是驱动。

一、步骤

  1. 创建工程,倒入驱动jar包
  2. 注册驱动
    • Class.forName("com.mysql.jdbc.Driver");
  3. 获取连接
    • Connection conn = DriverManager.getConnection(url, username, password);
  4. 获取执行SQL对象
    • Statement stmt = conn.createStatement();
      • 获取普通执行SQL的对象
        • Statement createStatement()
      • 预编译SQL的执行SQL对象
        • PreparedStatement prepareStatement(sql)
      • 获取存储过程的对象
        • CalableStatement prepareCall(sql)
  5. 执行SQL
    • stmt.executeUpdate(sql);
  6. 处理返回结果
  7. 释放资源

Connection

事务管理

try {//开启事务conn.setAutoCommit(false);//执行sqlint count1 = stmt.executeUpdate(sql1);//处理结果System.out.println(count1);//执行sqlint count2 = stmt.executeUpdate(sql2);//处理结果System.out.println(coutn2);//提交事务conn.commit();
} catch(Exception throwables) {//回滚事务conn.rollback();throwables.printStackTrace();
}

Statement

  • Statement的作用
    • 执行SQL语句
      • int executeUpdate(sql)
        • 执行DML、DDL语句
        • 返回值
          • (1)DML语句的行数
          • (2)DLL语句执行完毕后,执行成功返回0
      • ResultSet executeQuery(sql)
        • 执行DQL语句
        • 返回值
          • ResultSet结果集对象

ResultSet

  • ResultSet stmt.executeQuery(sql)
    • 执行DQL语句,返回ResultSet对象
  • boolean next()
    • 将光标位置向前移动一行
    • 判断当前行是否有效
    • 返回值
      • true 有效行,当前行有数据
      • false 无效行,当前行没有数据
  • xxx getXxx(参数)
    • 获取数据
    • 参数
      • int 列的编号,从1开始
      • String 列的名字
  
//获取执行sql的对象
StatementStatement stetement = connection.createStatement();  //执行sql  
ResultSet resultSet = stetement.executeQuery(sql);  List<User> list = new ArrayList<>();  //处理结果  
while(resultSet.next()){  User user = new User();  //获取数据 getXxx(参数);  int id = resultSet.getInt("id");  String name = resultSet.getString("name");  int money = resultSet.getInt("money");  user.setId(id);  user.setName(name);  user.setMoney(money);  //存入集合  list.add(user);  
}
System.out.println(list);

PreparedStatement

  • PreparedStatement
    • 预编译SQL并执行(预防SQL注入问题)
  • SQL注入
    • 通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法

SQL注入

通过输入来修改事先定义好的SQL语句
需求:完成用户登陆

select * from tb_user where username='zhangsan' and password = '123'; 

PreparedStatement

本质上是字符转义

一、获取PreparedStatement对象

//SQL语句中的参数值,使用?占位符替代
String sql = "select * from user where username = ? and password=?";//通过Connection对象获取,并传入对于的sql语句
PreparedStatement pstmt = conn.prepareStatement(sql);

二、设置参数值

PreparedStatement对象.setXxx(参数1, 参数2) 给?赋值
Xxx: 数据类型
参数:1. ?的位置编号,从1开始2. ?的值

三、执行SQL

executeUpdate(); 
or:
executeQuery();

不需要再传递sql语句,因为创建PreparedStatement对象时就已经传入了

预编译

/**  * PreparedStatement原理  * 预编译SQL,性能更高,需要手动开启预编译  * useServerPrepStmts=true  * 这样,检查SQL和编译SQL只会执行一次  */

数据库连接池

创建一个conn池,当用户访问完成数据库后,不是关闭,而是放回到池子里面,当下一个用户访问时,不需要重新建立一个

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词