JDBC(Java Database Connectivity)是一套用于执行SQL语句的Java API(主要位于 java.sql包中),应用程序通过这套API可以连接到数据库,并使用SQL语句对数据库中的数据进行增删改查等操作。
JDBC规范(掌握四个核心对象):
DriverManager:用于注册驱动
Connection: 表示与数据库创建的连接
Statement: 操作数据库sql语句的对象
ResultSet: 结果集或一张虚拟表
开发一个JDBC程序的准备工作:
> JDBC规范在哪里:
JDK中:
java.sql.*;
javax.sql.*;
> 数据库厂商提供的驱动:jar文件
*.jar
开发一个JDBC程序
过程:
1.加载驱动或注册驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Class.forName("com.mysql.jdbc.Driver");
2.通过DriverManager获取数据库连接
Connection conn = DriverManager.getConnection(String url, String user, String pwd);
url:表示连接数据库的URL地址
user:登录数据库的用户名
pwd:用户密码
3.通过Connection对象获取Statement对象
三种方式:
(1)creatStatement():创建基本的Statement对象。
(2)prepareStatement(): 创建PreparedStatement对象。
(3)prePareCall(): 创建CallableStatement对象。
Statement stmt = conn.createStatement();
4.使用Statement执行SQL语句
所有的Statement都有以下三种执行SQL语句方法。
(1)execute(): 可以执行任何的SQL语句。
(2)executeUpdate(): 主要用于执行DML(数据操作语言INSERT,UPDATE,DELETE)和DDL(数据定义语言CREATE,ALTER,DROP)语句。执行DML语句是,返回受SQL语句影响的行数,执行DDL语句返回0.
(3)executeQuery(): 通常执行查询语句,执行后返回代表结果集的ResultSet对象。
//执行sql语句,并返回结果
ResultSet rs = stmt.executeQuery("select * from users");
5.操作ResultSet结果集
如果执行的SQL语句是查询语句,则执行记过返回一个ResultSet对象,该对象中保存了SQL语句的查询结果。程序可以通过操作该ResultSet对象取出执行结果。
6.关闭连接并释放资源
每次操作数据库结束后都要关闭数据库连接,释放资源,包括关闭ResultSet、Statement和Connection等资源。
示例:
create database day06;
use day06;
create table users(
id int primary key auto_increment,
name varchar(40),
password varchar(40),
email varchar(60),
birthday date
)character set utf8 collate utf8_general_ci;
insert into users(name,password,email,birthday) values('zs','123456','zs@sina.com','1980-12-04');
insert into users(name,password,email,birthday) values('lisi','123456','lisi@sina.com','1981-12-04');
insert into users(name,password,email,birthday) values('wangwu','123456','wangwu@sina.com','1979-12-04');
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
//用JDBC技术实现查询数据库数据,并显示在控制台中
public class Demo1 {
public static void main(String[] args) throws Exception{
//1 注册驱动
// DriverManager.registerDriver(new com.mysql.jdbc.Driver());
Class.forName("com.mysql.jdbc.Driver");
//2 获取连接connection
Connection conn = DriverManager.getConnection("jdbc:mysql://lacalhost:3306/day06", "root", "root");
//3 得到执行sql语句的对象statement
Statement stmt = conn.createStatement();
//4 执行sql语句,并返回结果
ResultSet rs = stmt.executeQuery("select * from users");
//5 处理结果
while(rs.next()){
System.out.println(rs.getObject(1));
System.out.println(rs.getObject(2));
System.out.println(rs.getObject(3));
System.out.println(rs.getObject(4));
System.out.println(rs.getObject(5));
System.out.println("------------");
}
//6 关闭资源
conn.close();
stmt.close();
rs.close();
}
}
注意:
1.注册驱动
虽然使用DriverManager.registerDriver(new com.mysql.jdbc.Driver())方法可以完成注册,但此方法会使数据库驱动被注册两次,且强烈依赖数据库的驱动jar。这是因为Driver类的源码中,已经在静态代码块中完成了数据库驱动注册。所有为了避免数据库驱动重复注册,只需要在程序中使用Class.forName()方法加载驱动即可。
2.释放资源
每次操作数据库结束后都要及时关闭数据库资源,释放连接占用的数据库和JDBC资源,以免影响系统的运行速度。为了保证资源的释放,在java程序中,应该将最终必须要执行的操作放在finally代码块中。
2018-09-20 21:45:41