JDBC
JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力
工作原理:
java应用程序可以使用集成在JDK中的java.sql和javax.sql包中的JDBC API来连接和操作数据库
1.JDBC API
sun公司提供
作用:提供了java应用程序与各种不同数据库交互的接口
such as:Connection (连接)
Statement(执行SQL)
ResultSet(结果集)
PreparedStatement
2.JDBC Driver Manager(驱动程序管理器)
由sun公司提供
作用:是JDBC体系结构的支柱,负责管理各种不同的JDBC驱动
把java用用程序连接到相应的JDBC驱动程序上,位于JDK的java.sql包中
3.JDBC驱动
由数据库厂商提供
作用:负责连接各种不同的数据库,开发程序是我们只需要正确加载JDBC驱动,正确调用JDBC API就可对数据库进行访问。
JDBC API:
主要做三件事:与数据库建立连接,发送sql语句,处理结果
DriverManager:装载驱动程序,并为创建新的数据库连接提供支持
Connection (连接):负责连接数据库并担任传送数据的任务
Statement(执行SQL):由Connection产生,负责执行SQL语句
ResultSet(结果集):负责保存和处理Statement执行后所产生的查询结果
PreparedStatement:Statement的子接口,与Statement作用相同
PreparedStatement和Statement相比有什么优势:
PreparedStatement具有高安全性,高性能,高可读性和高维护性。
JDBC访问数据库的步骤:
1.加载JDBC驱动
示例:Class.forName("JDBC驱动的名称")
2.与数据库建立连接:
示例:Connection con=DriverManager.getConnection(数据连接字符串,数据库用户名,密码);
3.发送SQL语句,并得到结果返回
示例:Statement stmt=con.createStatement
ResultSet rs=stmt.excuteQuery("SELECT id FROM master")
4.处理返回结果:
示例:
while(rs.next()){
int id=rs.getInt("id");
String name=rs.getString("name");
System.out.printIn(id+" "+name);
}
两种常用的驱动方式:
1.JDBC-ODBC桥连方式 适用于个人开发与测试,通过ODBC与数据库连接
2.纯java驱动,他直接同数据库进行连接,在生产性开发中,用纯java驱动方式
statement常用方法
方法名
|
说 明
|
ResultSet executeQuery(String sql)
|
执行SQL查询并获取到ResultSet对象
|
int executeUpdate(String sql)
|
可以执行插入、删除、更新等操作,返回值是执行该操作所影响的行数
|
boolean execute(String sql)
|
可以执行任意SQL语句,然后获得一个布尔值,表示是否返回ResultSet
|
Resultset常用方法
方法名
|
说 明
|
boolean next()
|
将游标从当前位置向下移动一行
|
boolean previous()
|
游标从当前位置向上移动一行
|
void close()
|
关闭ResultSet 对象
|
int getInt(int colIndex)
|
以int形式获取结果集当前行指定列号值
|
int getInt(String colLabel)
|
以int形式获取结果集当前行指定列名值
|
float getFloat(int colIndex)
|
以float形式获取结果集当前行指定列号值
|
float getFloat(String colLabel)
|
以float形式获取结果集当前行指定列名值
|
String getString(int colIndex)
|
以String 形式获取结果集当前行指定列号值
|
String getString(String colLabel)
|
以String形式获取结果集当前行指定列名值
|
什么是持久化
将程序中的数据在瞬时状态和持久状态间转换的机制即为数据持久化
持久化的实现方式:
数据库
普通文件
XML文件
为什么要进行jdbc封装:
隔离业务逻辑代码和数据访问代码
隔离不同数据库的实现
DAO模式:
Data Access Object(数据存取对象)
位于业务逻辑和持久化数据之间
实现对持久化数据的访问
JDBC访问数据库的步骤
1.导包
2.加载驱动类 Class.ForName("com.mysql.jdbc.Driver");
3.建立连接数据库 conn=DriverManger getConnection("jdbc:mysql://localhost:3306/myschool","root","root");
4. 执行SQL语句 conn=stat.prepareStatement(sql);
5.返回处理结果 rs=stat.executeQuery();
6.关闭结果 conn.close()
PreparedStatement注入 相当于原来是一个条件,现在是两个条件只能满足一个
select * from student where studentName=?
select *from student where studentName=?,1or2