JDBC基础知识

JDBC

JDBC:sun公司为了java统一和简化java连接数据库,定义的一套规范,使用JDBC更加方便操作数据库

JDBC和驱动的关系
接口(JDBC)和实现(驱动jar包)的关系:驱动实现了JDBC

JDBC操作步骤

1.注册驱动(导驱动jar)---导入驱动jar,加载驱动class.forName("Driver类全限定名")
---避免驱动加载2次
---全限定名路径“com.mysql.jdbc.driver”
---参数写Driver类全限定名(全路径,带包名的), 让Driver类加载
2.获得连接
url 路径=主协议:子协议 ://域名对应IP地址:端口号/数据库名字
3.创建执行SQL语句对象
4.执行SQL语句,处理结果
5.释放资源(先创建的后关闭)---resultset---statement---connection--close

在这里插入图片描述
5个JDBC的API
drivermanager类
作用

1.注册驱动(不需要调用registerdriver(),只需要让driver加载就好)
2.获得连接
getconnection(url,username,password);获取连接对象

connection接口
概述:代表和数据连接对象,使用完之后,需要close
接口的实现在数据库驱动中。所有与数据库交互都是基于连接对象的。
作用:

createStatement() ;创建执行sql语句对象
prepareStatement(String sql) ;创建预编译执行sql语句的对象

statement接口
概述:执行SQL语句对象

执行SQL语句的方法
执行查询select:Result result = statement.executeQuery(sql)
执行增(insert)删(delete)改(update):int rows = statement.executeUpdate(sql)
boolean execute(String sql) 此方法可以执行任意sql语句。返回boolean值. 【了解】---一般不用
true: 执行select有查询的结果
false: 执行insert, delete,update, 执行select没有查询的结果

结果集resultset接口
1.next():每调用一次,光标向下移动一行【默认在表头】
如果当前行有数据,返回true;
如果当前行没有数据,返回false;
2.getxxx(String 列名);根据列名获得数据【xxx类型】—推荐
3.getxxx(int 列的索引);根据列的索引获得数据【xxx类型】—列的索引是从1开始的
在这里插入图片描述
注意:每遍历一次就是一条记录,就封装成一个对象

一个自己写的JdbcUtils工具类:
在这里插入图片描述
在这里插入图片描述

通过使用静态代码块来使得让驱动注册一次, 配置文件只需要读取一次
数据库的username、password、url、driver:配置在properties文件中,通过流的形式进行读取

上面使用statement会出现SQL注入的问题:
SQL注入问题

当输入的密码  ' or '' = ' , 发现永远登录成功
发现语句出现了sql注入问题
把用户输入的 or 当成关键词注入到了sql语句里面了

解决SQL注入问题:使用preparedStatement

preparedStatement:
概述:预编译SQL语句对象,是statement对象的子接口

特点:

性能要比statement高
会把SQL语句先编译,格式固定好
SQL语句中的参数会发生变化,过滤掉用户输入的关键字(eg:or)

利用preparedstatement处理SQL注入步骤:

1.注册驱动
2.获得连接
3.获得预编译的SQL语句对象(如果sql语句有参数,先用?参数占位)
4.设置参数(没有就不设置。),执行,处理结果
5.释放资源

在这里插入图片描述
CRUD
增 create
在这里插入图片描述
删delete
在这里插入图片描述
查询retrieve(read)
在这里插入图片描述
update 改
在这里插入图片描述
注意事项:

1.如果SQL语句有参数,先用?参数占位
--?只能占参数值,列的名字,表名,关键字不能占位
2.执行,不需要传SQL语句的
--int rows=preparedStatement.executeUpdate();执行增删改
--ResultSet resulyset=preparedStatement.executeQuery();执行查询
3.给参数赋值,第几个问号从1开始计数的
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值