java基础之JDBC

java基础之JDBC

Scroll Down

JDBC原理及使用Statement访问数据库

可以为多种关系型数据库DBMS 提供统一的访问方式,目的是用java操作数据库

在这里插入图片描述
JDBC API
API就是:接口、方法、类
1.JDBC API:提供各种操作访问接口,Connection Statement PreparedStatement ResultSet
2.JDBC DriverManager:管理不同的数据库驱动
3.各种数据库驱动:相应的数据库厂商提供的,连接/直接操作数据库

JDBC API:主要作用:

1.与数据库建立连接Connection
2.发送SQL语句Statement
3.返回处理结果ResultSet

执行SQL(增删改excuteUpdate(),查询是excuteQuery())

在这里插入图片描述

类/接口实现功能
DriverManager管理JDBC驱动
Connection连接,通过DriverManager产生
Statement(PreparedStatement)增删改查,通过Connection产生
callableStatement调用数据库中的存储过程/存储函数,通过Connection产生
Result返回的结果集,通过上面的statement等产生

获取rs指向行数据
rs.getInt();
rs.getString();
rs.getDate();
。。。。
在这里插入图片描述

Statement操作数据库:
增删改:executeUpdate()
查询:executeQuery()

ResultSet:保存结果集 select * from xxx
rs.next():判断是否有下一个数据
rs.getXxx(字段值||位置);获取具体的字段值
preparedStatement操作数据库:
public interface PreparedStatement extends Statement
因此:
增删改:executeUpdate()
查询:executeQuery()
赋值操作:setXxx(); //预编译,可以用?充当占位符

PerparedStatement与Statement在使用时的区别:

StatementPrepareStatement
sqlcreateStatement() sql(可能存在占位符?)
prepareStatement(sql)pstmt.setXxx(1,值);//预编译
executeUpdate(sql)excuteUpdate()

推荐使用子类PreparedStatement:原因如下:
1.编码更简便
2.提高性能
3.Statement存在被SQL注入的风险,Preparedment有效防止

JDBC访问数据库的具体步骤

**1.导入驱动包:**加载具体的驱动类
Class.forName("具体的驱动类");
2.与数据库建立连接

Connection conn = new Connection();
conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
3.通过connection,获取操作数据库的对象Statement,PreparedStatement,callableStatement
stmt = conn.createStatement();
pstmt = conn.PrepareStatement(sql);

4.处理结果集(一般对于查询)
增删改 查询
rs = pstmt.executeUpdate(); rs = pstmt.executeQuery();

数据库驱动

数据库驱动jar 具体驱动类
Oracleojdbc-x.jar oracle.jdbc.OracleDriver
MySQLmysql-connector-java-x.jar com.mysql.jdbc.Driver

JDBC调用存储过程和存储函数
callableStatement:调用 存储过程、存储函数connection.prepareCall(参数:存储过程或者存储函数名)
存储过程(无返回值return ,用out参数代替)
{call 存储过程名(参数列表)}
存储函数(有返回值return):
{?=call 存储过程名(参数列表)}

JDBC调用存储过程的步骤:
a.产生 调用存储过程的对象(CallableStatement) cstmt = connection.prepareCall("…..");
b.通过setXxx()处理 输出参数值 cstmt.setInt(1,值);
c.通过registerOutParameter(。。。)处理输出参数类型
d.执行存储过程cstmt.execute()
e.接受输出值(返回值)cstmt.getXxx();

JDBC调用存储函数
与上同,注意参数

JDBC处理CLOB/BLOB类型

处理稍大型数据
a:存储路径
通过JDBC存储文件路径,然后根据IO操作处理
获取:1.获取该路径 2.IO操作
b.
CLOB(MySQL是Text类型):大文本数据(例:小说-->数据)
BLOB:可以放2进制文件(就是所有文件)