JDBC学习笔记

 

1.JDBC编程的一般步骤:

(1).注册数据库连接驱动。

(2).建立数据库连接。

(3).创建SQL语句。

(4).执行SQL语句。

(5).处理执行结果。

(6).释放资源和数据库连接。

2.JDBC注册数据库连接驱动3种方式:

(1).DriverManager.registerDriver(驱动类对象);

(2).System.setProperty(“jdbc.drivers”, 驱动类名);

(3).Class.forName(驱动类名);

其中,第三种通过反射注册驱动是最常用的方式,也是JDBC编程中推荐使用的方式。

3.JDBC连接url格式:

jdbc:子协议[:子名称]//主机名:端口号/数据库名?属性名=属性值&……

mysql数据库为例,其jdbc连接url为:

jdbc:mysql://主机名或IP:3306/数据库名?username=root&password=……

4.SQL注入攻击和防止:

SQL注入攻击是以非法手段构造出一些恶意的SQL语句,以窃取数据库中机密数据或者破坏数据。

(1)SQL注入攻击的例子:

JDBC编程中,SQL语句拼接形式非常不安全,容易产生SQL注入攻击的漏洞,如一段查询SQL如下:

 

当传入name参数的值为:name=’ or 1 or ‘的时候,拼接产生出来的SQL语句如下:

 

在某些数据库中1是关键字,类似于true,所以这条语句就会把所有的数据全部查询出来,从而产生SQL注入攻击。

(2).防止SQL注入攻击的简单方法:

以下两种简单办法可以防止一些基本的SQL注入攻击。

a.       SQL语句不是用字符串拼接方式,所有参数全部使用问号(”?”)来代替.

b.       使用JDBCPreparedStatement代替Statement,在预编译处理时过滤掉特殊字符。

5.JDBCjava.util.Datejava.sql.Date之间的类型转换:

(1).java.util.Datejava.sql.Date转换:

直接使用new java.sql.Date(java.util.Date对象.getTime());

(2).java.sql.Datejava.util.Date转换:

可以直接赋值,因为java.sql.Date继承自java.util.Date,所以父类可以直接引用子类对象。

也可以使用java.util.Date(java.sql.Date对象.getTime());方式。

6.JDBC处理clob类型数据:

数据库中存放大文本数据类型时,使用clob数据类型,jdbc读取和存储clob数据类型方法如下:

(1).读取clob

a.使用预处理PreparedStatement对象进行查询以后,将查询结果存放到结果集ResultSet对象rs中。

b.Clob类型数据读取到输入流中:Reader reader = rs.getCharacterStream(“clob类型的列名或列索引”);

c.处理从结果集中获取到的输入流。

(2).存储clob

a.使用预处理PreparedStatement对象pst设置Reader对象:

 

b.使用IO流将大文本读入到Reader对象中。

c.执行pst将大文本保存到数据库中。

7.JDBC处理blob类型数据:

数据库中存放大的二进制文件,如图片等,使用blob数据类型,jdbc读取和存储blob数据类型方法如下:

(1).读取blob

a.使用预处理PreparedStatement对象进行查询后,将查询结果存放到结果集ResultSet对象rs中。

b.Blob类型数据读取到输入流中:InputStream in = rs.getBinaryStream(“blob类型的列名或列索引”);

c.处理从结果集中获取到的输入流。

(2).存储blob

a.使用预处理Preparedment对象pst设置InputStream对象:

 

b.使用IO流将大的二进制文件读入到InputSteam对象中。

c.执行pst将大的二进制数据保存到数据库中。

8.JDBC调用存储过程:

JDBC使用CallableStatement来调用存储过程,CallableStatement是从PreparedStatement扩展而来。具体调用存储过程方法如下:

 

9.JDBC执行批处理:

使用PreparedStatement对象pstpst.addBatch();可以添加批处理操作。

执行批处理操作方法:pst.executeBatch();

10.JDBC可滚动结果集:

JDBC默认的结果集是从前向后单向查找的,可滚动结果集是指结果集可以向前和向后双向查找。可滚动结果集用法如下:

 

可滚动结果集常用方法如下:

 

注意:可滚动结果集可以用做数据假分页。

11.JDBC的可更新结果集:

普通的结果集是只读的,可更新结果集是可以直接修改的,更新后的结果集会更新到数据库中。可更新结果集用法如下:

 

12.JDBC获取数据库元数据信息方法:

(1).connection.getMetaDate();方法可以获得数据连接相关元数据。

(2).connection.getParameterMetaDate();方法可以获得数据库连接参数相关元数据。

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值