目录
JDBC基本概念
基本概念:Java DataBase Connectivity , Java数据库连接,Java语言操作数据库。
面向接口编程:接口都有调用者和实现者。面向接口调用,面向接口写实现类,这都属于面向接口编程。
面向接口编程的目的:解耦合:降低程序的耦合度,提高程序的扩展力。
引入JDBC:每一个数据库产品的底层实现原理都不一样,需要接口来统一规则,方便程序员编码。
JDBC的本质:其实是sun公司官方提供的一套操作所有关系型数据库的规则,即接口。各个数据库厂商(接口的实现者)去实现这套接口,提供数据库驱动jar包,我们(接口的调用者)可以使用这套接口编程,真正执行的代码是驱动jar包中的实现类。
数据库驱动:各个厂商写的不同的接口的实现类又称数据库驱动,所有的数据库驱动都是以jar包的形式存在,jar包当中的*.class文件都是对JDBC接口的实现
快速入门
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class JdbcTest01 {
public static void main(String[] args) throws Exception {
//导入驱动jar包
//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//获取数据库的连接对象
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3307/db2","root","root");
//定义sql语句
String sql = "update account set balance = 500 where id = 1";
//获取sql执行的对象
Statement statement = connection.createStatement();
//执行sql
int count = statement.executeUpdate(sql);//返回执行sql语句后影响了几行数据
System.out.println(count);
//释放资源
statement.close();
connection.close();
}
}
JDBC编程步骤
1.导入MYSQL的驱动jar包:即MYSQL厂商的JDBC实现类。将mysql-connector-java-5.1.37-bin.jar导入工程中。
IDEA中步骤:导入驱动jar包-->创建libs文件夹(方便管理)-->将其复制到文件夹-->右键add as library(将jar包加入到工作空间中)
2.注册驱动:告诉Java程序,即将要连接的是哪个品牌的数据库
3.获取数据库的连接对象:表示JVM的进程和数据库进程之间的通信打开了,这属于进程之间的通信,使用完之后一定要关闭通道。
4.定义sql语句
5.获取执行sql语句的对象:专门用来执行sql语句的对象
6.处理查询结果集:只有当执行的是select语句,才会有处理结果集
8.释放资源:使用完资源之后一定要关闭资源,Java和数据库之间属于进程之间的通信,开启之后一定要关闭。
对JDBC步骤详解
注册驱动
注册驱动方法一:
//1.注册驱动
/*
等号左边是sun公司提供的接口,等号右边是mysql厂家提供的实现类(驱动)之一---->com.mysql.jdbc.driver类
利用了多态,父类引用指向子类对象。
*/
Driver driver = new com.mysql.jdbc.Driver();
DriverManager.registerDriver(driver);
DriverManager类是sun公司提供的管理一组 JDBC 驱动程序的基本服务。
DriverManager类中的静态registerDriver方法用于注册给定驱动程序。
查看需要传入的参数-Driver对象:Driver是sun公司提供的接口,供厂商实现。以MYSQL为例,Driver接口的实现类为 mysql驱动中的com.mysql.jdbc.driver类。
注册驱动方法二:
由于填入的参数是字符串,字符串可以写入配置文件中,故该方法常用。
Class.forName("com.mysql.jdbc.Driver");
还记得反射吗?如果忘啦,请看看这篇反射
MYSQL厂商提供的jar包中包含了一个与数据库连接的类——com.mysql.jdbc.Driver即驱动,我们通过反射技术Class.forName("全类名")来将字节码文件加载到内存中,由于注册驱动的语句写在静态代码块,所以会随着类加载静态代码块被执行,即完成注册驱动。
注意:Class.forName(全类名)此处不需要接收class返回值,因为我们只需要它的类加载动作。
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
//
// Register ourselves with the DriverManager
//
static {
try {
//注册驱动
java.sql.DriverManager.registerDriver(new Driver());
} catch (SQLException E) {
throw new RuntimeException("Can't register driver!");
}
}
获取数据库的连接对象
//2.获取连接
String url = "jdbc:mysql://localhost:3307/db1";
String user = "root";
String password = "root";
Connection conn = DriverManager.getConnection(url,user,password);
DriverManager类中的静态getConnection方法可以返回一个连接对象。
参数URL:统一资源定位符(网络中某个资源的绝对路径),包括通信协议,服务器IP地址(相当于用于定位某台计算机的代号),服务器上某个软件的端口(相当于用于定位该计算机上某个软件的代号),服务器上某个资源名
url: mysql写法:jdbc:mysql://ip地址(域名):端口号/数据库名称
注意:如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则url可以简写为
jdbc:mysql:///数据库名称
获取执行sql语句的对象
//3.获取数据库操作对象-用于执行sql语句
Statement stat = conn.createStatement();
Connection是一个sun公司的提供给我们的接口。
Connection中有一个静态方法createStatement()方法(厂商已经实现,所以可以直接使用对象调用)创建一个Statement对象来执行sql语句