JDBC入门

JDBC

JDBC概述

JDBC是一种用于执行Java语句的java API,可以为多种关系数据库提供统一访问,他由一组有java编写的类和接口组成。是java访问数据库的标准规范。

JDBC原理

首先明确两个概念

  1. JDBC:是java提供的连接数据库的规范
  2. 驱动 :是接口的实现类,没有驱动就无法完成数据库的连接,也就无法实现对数据库的操作,一般响应的驱动实现类由各个数据库厂商提供。
  3. 原理示意图

在这里插入图片描述

JDBC操作数据库步骤
  1. 注册驱动
Class.forName(“com.mysql.jdbc.Driver”);
  1. 获得连接
String url="jdbc:mysql://localhost:3306/member";//子协议:子名称//主机名:port/数据库名
String username="root";//数据库的username
String password="root";//数据库密码
Connection conn = DriverManager.getConnection(url, username, password);
  1. 获得SQL语句执行对象
    通过Connection对象获取Statement工具,此方式具有SQL注入攻击风险。
    通过Connection对象获取PreparedStatement工具,PreparedStatement为Statement的子类,SQL语句已预编译并存储在
    PreparedStatement对象中, 然后可以使用该对象多次有效地执行此语句,同时也防止了SQL注入。
PreparedStatement  ps=connection.prepareStatement( "update user set id=?  where username=?”);“?”为占位符 
setXXX(int parameterIndex,String x) :可通过此方法可设置各占位符变量的值,其中paremeterIndex为第 paremeterIndex各变量的
	值。而且预编译结果能够存储在PreparedStatement对象中。当多次运行SQL语句时能够提高效率。
  1. 执行SQL语句
int n = prst.executeUpdate();;//执行在该SQL语句PreparedStatement对象,它必须是一个SQL数据操纵语言(DML)语句,如INSERT , UPDATE或DELETE ; 或不返回任何内容的SQL语句,例如DDL语句
ResultSet re = prst.executeQuery();//执行此 PreparedStatement对象中的SQL查询,并返回查询 PreparedStatement的 ResultSet对象。 

  1. 处理结果

executeUpdate();返回的整形变量含义为数据库中受影响的行数。
ResultSet result = prst.executeQuery();
当我们查询数据库中的表时,返回的结果通常是一个二维的数据表结果集。我暂时将它理解为和集合迭代器类似,通常使用它来遍历查询结果。
具体查询方式为:ResultSet对象保持一个光标指向其当前的数据行。 最初,光标位于第一行之前。 next方法将光标移动到下一行,并且由于在ResultSet对象中没有更多行时返回false ,因此可以在while循环中使用循环来遍历结果集。

获取结果集数据有两种常用方式

result.getXXX(int columnIndex)://获取当前行指定索引值的数据
result.getXXX(String columnLabel);//获取当前行指定数据库中表的列名的数据

  1. 关闭资源
    使用过后的资源必须释放。
JDBC遇到的几个错误
  1. result.getString(String label); 中的label书写不规范,与数据库中表的列名不一致,运行时报出Column ‘id’ not Found
  2. SQL语句书写错误,以后要将SQL语句先检验下在写入代码中
  3. SQL与语句中Date类型的插入格式包括'2018-12-23'或者20181223,其中第二种应该用单引号括起来
思考
  1. 实际上每次“获取连接”和“关闭连接”地非常消耗系统资源的两个过程,怎么接解决
    分析:可以采用连接池,对连接进行统一维护,不必每次都建立和关闭连接
    连接池实现参考:https://blog.csdn.net/qq_41345281/article/details/89071128

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值