JDBC
一.何为JDBC
JDBC是java datebase connectivity 的缩写,翻译为java数据库连接,用java操纵数据库。本质上是由sun公司开发的一套用来在java与关系型数据库间实现链接的一套接口(规范)。
也就是说,本身关系型数据库有很多种,如:Oracle、MYSQL、DB2,为了统一管理,sun公司开发了一套java接口用来统一java代码与关系型数据库之间的链接。
二.JDBC快速入门
- 注册驱动jar包
如上文所说,jdbc本身只是定义了一系列接口,那我们肯定需要通过类来实现。不过,方便的是,各个公司已经写好了本公司数据库所对应的驱动jar包(也就是具体的实现类)。
package com.tarkee.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class Main {
public static void main(String[] args) throws Exception {
//注册驱动,告诉java是哪个驱动jar包
Class.forName("com.mysql.jdbc.Driver");
//创建数据库链接对象
Connection coon = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1", "root", "1234");
//创建sql
String sql = "update custom set age =20000 where id=141002";
//创建执行sql对象
Statement stat = coon.createStatement();
//返回执行结果
int count = stat.executeUpdate(sql);
//输出执行结果
System.out.println(count);
//关闭资源
stat.close();
coon.close();
}
}
效果为:
三.详解各个类
DriverManagemer类:
功能:
1.注册驱动:告诉程序该使用哪一个数据库驱动jar,在上述代码的第一个语句,
Class.forname("com.mysql.jdbc.Driver");
含义为将driver类加载到内存,既然我们没有创建任何相关的对象,那么肯定是其中的静态代码块发挥了作用,通过查看源码可以发现,driver中存在静态代码快,将DirverManager类创建对象。
2.创建数据库
方法为:static Connection getConnection(String url, String uesr, String password)
其中url为链接数据库的统一资源定位符
语法为:jdbc:mysql://ip地址(域名):端口号/数据库名称
注:需要注意的一点是:Connnection和Statement对象需要通过close()方法释放资源,但如果直接抛出异常,可能会导致无法释放,以致于成为垃圾资源在内存堆积,故应该用try/catch语句包裹,并在fianlly中释放资源
package com.tarkee.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
public static void main(String[] args) {
Connection coon=null;
Statement stmt=null;
try {
Class.forName("com.mysql.jdbc.Driver");
coon = DriverManager.getConnection("jdbc:mysql:///db1", "root", "1234");
String sql = " insert into tb1 value(1000,'tarkee') ";
stmt = coon.createStatement();
int count=stmt.executeUpdate(sql);
System.out.println(count);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
finally {
if(stmt!=null){
try {
stmt.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if(coon!=null){
try {
coon.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
}