概述
JDBC(Java Database Connectivity)是连接数据库和Java程序的桥梁,说白了就是专门用来让Java程序操控数据库的工具,有了JDBC我们就可以通过Java语言向数据库发送SQL语句,同时可以把java程序中要长期保存的数据存到数据库中。
事实上,我们会碰到的主流数据库有好多,像MySQL、SQL Server、Oracle、Access等,为了使Java程序能够适应不同的数据库,SUN公司为数据库厂商定义了统一的规范——JDBC,也就是说JDBC里面包含了一些接口,让可以实现连接Java和DB的数据库厂商实现这些接口。那些实现/继承了JDBC中的接口,可以实现让Java程序操控自己的数据库的一些类/子接口,打包成jar包,我们把这样的jar包称为驱动(Driver)。
核心类/接口
<类>DriverManager
作用:
1. 注册驱动,可以让JDBC知道要用的是那种数据库
2. 新建连接,调用getConnection()的静态函数来新建连接对象
<接口>Connection
作用:
我们在学习MySQL的时候就已经知道操控数据库都是在连接的基础之上,这里也不例外,所有的数据库操作都是通过数据库的连接对象展开的。Connection有一个核心方法就是createStatement()来创建Statement对象
<接口>Statement
作用:
通知数据库执行SQL语句,根据SQL语句对数据执行的不同操作,Statement提供了不同的方法
1. 更新操作:int executeUpdate(String sql)通过传进来的SQL语句,对数据库的数据进行增删改操作,返回表中受影响行数;该方法还可以用来对表进行增删改,但一般用不到。
2. 查询操作:ResultSet executeQuery(String sql)通过传进来的SQL语句,对数据库的表进行查询操作,返回的是结果集。
<接口>ResultSet
作用:
存储查询之后的结果,结果集是一个二维表,里面有一个行光标,这种类似于迭代器,我们可以通过ResultSet提供的方法自由移动光标和读取数据,篇幅关系这里就不展示ResultSet所包含的方法了。
Java-MySQL数据类型映射
Java和数据库的数据类型有些不同,这里列出了部分常用数据类型的映射
MySQL | Java | |
所有整数类型 (tinyint、smallint、int等) | int | |
所有浮点数类型 (double、float、numeric) | double、decimal | |
所有字符串类型 (char、varchar等) | String |
JDBC用法
1. 拷贝jar包
数据库厂商为了能让Java程序可以连接到自己品牌的数据库,提供了数据库驱动,所以在使用JDBC前要将jar包搞到Java项目里面,放到直属于项目的lib目录下,没有lib目录就自己造一个。
2. 加载数据库驱动
Class.forName("数据库驱动类全名");
以MySQL 为例:Class.forName("com.mysql.jdbc.Driver");
3. 建立连接
String url = "..."; String username = "..."; String pwd = "......";
Connection con = DriverManager.getConnection(url, username, pwd);
url是数据库的地址,MySQL的url格式为jdbc:mysql://数据库的IP地址:端口号/数据库名
localhost代表本机的IP地址
本地数据库url可以写成jdbc:mysql://localhost:3306/db_something
4. 获取Statement对象
Statement st = con.createStatement();
可以通过Statement对象的executeXXX(sql语句)的方法通知数据库对数据进行操作
5. 通知数据库执行操作
int lines = st.executeUpdate("增删改的SQL语句");
或
ResultSet rs = st.executeQuery("查询的SQL语句");
6. 操作结果集(前提是已经查询过数据库了)
7. 关闭资源
资源的打开和关闭类似于栈的结构,关闭资源时要倒序关闭
这里是先关闭结果集,再关闭Statement,最后断开数据库连接,完结撒花~
rs.close();
st.close();
con.close();