Javaee 复习 Day4

JDBC

JDBC(Java Database Connectivity)是 Java环境中访问SQL数据库的一组API。它包 括一些用Java语言编写的类和接口,能方便地 向任何关系型数据库发送SQL命令。

JDBC Type-4驱动程序的安装方法

●以MySQL数据库为例,只须将下载的MySQL JDBC驱 动程序mysql-connector-java-8.0.19-bin.jar包置于 Web服务器的lib文件夹中即可。

●第二种方法,也可以在开发环境中导入JAR包,然后 随Web应用一起发布至Web服务器。

JDBC API

●java.sql包

JDBC API的核心部分在java.sql包中,包含访问并处 理数据库数据的API。

● javax.sql包

javax.sql包是java.sql 包的补充,它从JDK1.4版本开 始提供,支持连接池和数据源技术,支持分布式事务 处理

常用JDBC API类和接口

●java.sql.Driver接口

该接口的实现类是某种数据库的一个驱动程序类,用于初始化驱动程序。

加载此驱动程序的代码类似于: Class.forName("SQLServerDriver");

MySQL的JDBC Type-4驱动程序的类名为: com.mysql.cj.jdbc.Driver

●java.sql.DriverManager类

管理注册到DriverManager中的JDBC驱动程序,并根据需要使用JDBC驱动程序建立与数据库服务器的网络连接。

常用的方法有:

①getConnection(String url, String user, String password)

②getConnection(String url)

eg:getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai", "root", "javaee")

eg:getConnection("jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&user=root&password=javaee")

●java.sql.Connection接口

代表一个数据库连接,常用的方法有:

①createStatement():创建一个 Statement 对象,用于发送SQL 语句给数据库服务器。该方法可带不同参数以便指定结果集的类型、并发控制方式以及保护性等。

②prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability):

为一条带 参数的SQL语句生成PreparedStatement对象(预编译对象) 。第一个形参是带有"?"号参数的预编译SQL语句,其它参数 含义同前。

③prepareCall(String sql):为一条带参数的存储过程调用语句,生成CallableStatement预编译对象,各参数含义同前

④setAutoCommit(boolean autoCommit):

定义事务提交模式, 参数取true时为事务自动提交模式,即对接收到的每条SQL语句当作一个独立事务提交。参数取false时则表示手动事务提交模式,须调用commit()手动提交事务或调用rollback()撤消 事务。

⑤commit():提交事务,这个方法只有在手动事务提交模式下才有效。

⑥rollback():回滚所有的事务。

⑦setSavepoint():在当前语句处创建一个回滚点,并返回一个 Savepoint对象表示此回滚点。 ⑧rollback(Savepoint sp):回滚事务到指定的回滚点处。

⑨close():关闭数据库连接,释放资源。

●java.sql.Statement接口

用于向数据库服务器发送SQL语句,接口中常用方法有:

①executeQuery(String sql):将一条select查询语句发送给数据库服务器执行,查询结果封装在ResultSet对象中返回。形参是以字符串表示的SQL语句。这个方法不能执行update、 delete、insert等更新操作语句。

②executeUpdate(String sql):用来执行delete、update和 insert语句,也可以执行一些建库、建表语句,返回值是整数, 表示语句影响的记录数

③setMaxRows(int max):定义ResultSet对象最多存储max条记录,超过部分被丢弃。

●java.sql.ResultSet接口

代表SQL查询得到的记录集。可设置Statement对象的 ResultSet 对象的指针移动特性和是否可更新等。主要方法如下:

①first()、previous()、next()、last()、absolute(int row)等:移动记录指针。

②getString(String column Name)/getString(int columnIndex)、 getByte()、getShort()、getInt()、getLong()、getFloat()、 getDouble()、getBoolean()、getDate()、getTime()、 getObject()、getBlob()、getClob()等:读取当前记录的指定字段值。

通过Blob接口的getBinaryStream()/setBinaryStream() 方法可获得此二进制对象的输入/输出流对象

③updateString(String columnName, String x)、updateShort()、 updateInt()、updateLong()、updateByte()、updateDate()、 updateTime()、updateFloat() 、updateDouble() 、update Boolean()、updateBlob()、 updateClob()等:更新当前记录指定字段值。

④updateRow():用当前记录的新值更新数据库数据。

⑤deleteRow():删除当前记录。

数据库连接池

在Web应用程序开发中,对于频繁的数据库操作,前面 介绍的JDBC编程流程将出现频繁的建立连接、关闭连接等操作,势必导致系统开销加大,数据库访问效率降低。为了解决这些问题,在Web应用开发中引入了数据库连接池技术。

本质上,连接池是在一个集合对象中存储一定数量的数据库连接对象,当程序需要使用数据库连接时,申请从池中获取一个空闲的连接,程序使用完毕后再把连接放回池中重用。连接池通过重用连接的方法,减少了创建连接的系统开销,能够明显提高系统的数据库访问效率。

JDBC数据库编程方法

基于驱动程序的JDBC编程

加载JDBC驱动程序

Class.forName("com.mysql.cj.jdbc.Driver");

创建与数据库连接

Connection conn=DriverManager.getConnection("jdbc:mysql://localhost: 3306/test?serverTimezone =Asia/Shanghai","root","javaee");

创建语句对象

①Statement stmt=conn.createStatement();

②PreparedStatement pstmt=conn.prepareStatement(strSQL) ;

③CallableStatement cstmt=conn.prepareCall(strSQL);

执行SQL语句

ResultSet rs=stmt.excuteQuery(strSQL); int num=stmt.executeUpdate(strSQL);

ResultSet rs=pstmt.excuteQuery(); int num=pstmt.executeUpdate();

ResultSet rs=cstmt.excuteQuery(); int num=cstmt.executeUpdate();

Ⅴ[处理结果集]

String sName=rs.getString("username"); String sName=rs.getString(1);

关闭相关对象

[rs.close();]

stmt.close(); / pstmt.close(); / cstmt.close();

conn.close();

例如:

基于连接池的JDBC编程

以“基于驱动程序的JDBC编程”方法为基础。 在“创建与数据库连接”步骤,采用连接池改进了数据 库连接对象的管理和获取方式。 其余步骤,保持不变。

例如:

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值