数据库之:JDBC开发步骤及常用接口介绍
1.什么是jdbc
java database connectivity:java 连接数据库技术
sun公司简化开发,设计的一套数据库连接管理规范,主要由一些列接口组成。
实现连接数据库的条件:
- jdbc接口:java包(java.sql, javax.sql)
- 驱动:由各自数据库厂商提供,驱动就是对jdbc接口的实现
2.jdbc开发的步骤
- 注册驱动(通过Drivermanager管理驱动:知道是哪个数据库)
- 建立连接(Connection)
- 发送sql命令
- 获取相应处理结果
- 释放资源
具体步骤:
1)注册驱动
连接的是哪个数据库(oracle,mysql......),就把这个数据库的驱动Driver交给DriverManager来进行管理。
DriverManager.redisterDriver(new Driver());
DriverManager(类)
驱动管理器
作用:注册和管理驱动程序
获取连接对象
方法1:
此方法不可取:在加载Driver类时,会执行Driver类中的静态代码块,自动注册一次,然后register()方法会再注册一次;(类被加载了一次后,再次new不会执行静态代码块里的内容)。
DriverManager.registerDriver(new Driver());
方法2:
一般使用此方法
Class.forName("com.mysql.jdbc.Driver");
2)建立连接
使用TCP连接,来连接具体的数据库。
Connection conn = DriverManager.getConnection(
“jdbc:mysql://localhost:3306/bd888?useSSL=true”,
"root",
"root");
Connerction(接口)
代表与数据库服务的连接
作用:作为数据传输的通道,创建Statement对象。
conn.setAutoCommit(aitoCommit);//设置事务自动提交
conn.commit();//提交事务
conn.rollback();//回滚事务
conn.createStatement();//创建Statement实现类对象
conn.prepareStatement(sql);//创建prepareStatement对象,prepareStatement是Statement接口的子接口
conn.prepareCall(sql);//创建prepareCall对象,prepareCall是Statement接口的子接口,用于调用存储过程
//方法:DatabaseMetaData getMetaData();
//元数据:解释数据的数据
DatabaseMetaDate md = conn.getMetaData();//获取元数据实现对象
String dpn = md.getDatabaseProductName();//获取数据库产品的名字
String driverName = md.getDriverName();//获取驱动的名字
String url = md.getURL();//获取URL
String userName = md.getUserName();//获取用户名
3)发送sql命令
String sql = "select * from student"; //sql语句
//发送sql命令 接收响应
Statement stmt = conn.createStatement(); //创建Statement对象
ResultSet res = stmt.execute(sql); //接收结果集
Statement接口
用于发送sql指令
子接口: PrepareStatement CallableStatement
Statement接口中常用方法:
- execute:发送任意sql命令,返回boolean类型
- executeQuery:发送查询命令,返回ResultSet类型
- executeUpdate:发送增删改查和DDL语句,返回值为int,影响的行数
- executeBatch:发送批处理命令,返回值int[ ]
ResultSet(接口)
结果集,底层封装指向结果集的游标
ResultSet接口常见方法:
- next():用于移动游标,返回值为boolean,为true则当前行有值,false则当前行没有值。
- getX():用于获取字段值,getString、getInt、getLong.....
- ResultSetMetaData rsmd = rs.getMetaData();
代码示例:
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mysql.jdbc.Driver;
public class Test {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
//1.注册驱动
DriverManager.registerDriver(new Driver());
//2.建立连接
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/bd1808?useSSL=true",
"root",
"root");
//3.发送sql命令
String sql = "select * from student";
//发送sql命令以及接收响应
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
//4.获取响应并处理
while(rs.next()){//获取记录
//逐列获取数据
int sid = rs.getInt("sid");
String sname = rs.getString("sname");
int cid = rs.getInt("cid");
System.out.printf("sid:%d,sname:%s,cid:%d\n",sid,sname,cid);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
//5.释放资源
try {
if(rs!=null){
rs.close();
}
if(stmt != null){
stmt.close();
}
if(conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}