一、什么是JDBC
JDBC(Java DataBase Connectivity)就是Java数据库连接,用Java语言来操作数据库。简单地说,JDBC就是用于执行SQL语句的一系列Java API。
二、为什么要使用JDBC
早期SUN公司想编写一套可以连接天下所有数据库的API,但是因为各个厂商的数据库服务器差异太大了,这任务几乎无法实现。后来SUN开始与数据库厂商们讨论,最终得出的结论是,由SUN提供一套访问数据库的规范,并提供连接数据库的协议标准,然后各个数据库厂商会遵循SUN的规范提供一套访问自己公司的数据库服务器的API出现。SUN提供的规范命名为JDBC,而各个厂商提供的接口实现被称之为驱动。
通过JDBC使得我们可以直接使用Java编程来对关系数据库进行操作。通过封装,可以使开发人员使用纯Java API完成SQL的执行。
三、准备工作
我们以MySql为例来使用JDBC操作数据库,现有如下的数据表在MySql中:
其建表语句为:
CREATE DATABASE jdbcDemo;
use jdbcDemo;
CREATE TABLE `per`(
`id` INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(50),
`age` INT,
`city` VARCHAR(100)
);
INSERT INTO per VALUES(NULL,'Estelle',24,"深圳");
INSERT INTO per VALUES(NULL,'Jasmine',27,"上海");
INSERT INTO per VALUES(NULL,'Iris',23,"长沙");
INSERT INTO per VALUES(NULL,'Emily',25,"广州");
INSERT INTO per VALUES(NULL,'Bunny',25,"深圳");
准备好mysql数据库的驱动jar包,并导入到项目中
四、准备工作完毕,现在让我们一起学习下JDBC的基本操作吧
- 加载驱动类并获取连接:
package com.gyx.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
public class JDBCDemo {
public static void main(String[] args) {
Connection connection = null;
try {
Class.forName("com.mysql.jdbc.Driver"); // 加载驱动类
// 连接MySql的URL
String url = "jdbc:mysql://localhost:3306/jdbcDemo";
String username = "root"; // MySql的用户名
String password = "123"; // MySql的用户密码
// 获取连接
connection = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
e.printStackTrace();
}
}
}
以上代码若若能够正常运行不抛异常,则证明之前的准备工作是没有失误的。
- 发送增删改语句
简单描述下我们的操作:
1.添加一条记录:name:Tom age:29 city:北京
2.修改名为Iris的记录:age->31 city->成都
3.删除名为Bunny的记录
package com.gyx.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCDemo {
private static Connection connection;
public static void main(String[] args) {
connection = null;
try {
Class.forName("com.mysql.jdbc.Driver"); // 加载驱动类
// 连接MySql的URL
String url = "jdbc:mysql://localhost:3306/jdbcDemo";
String username = "root"; // MySql的用户名
String password = "123"; // MySql的用户密码
// 获取连接
connection = DriverManager.getConnection(url, username, password);
CUDMethod();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void CUDMethod() {
try {
// 创建用于发送SQL语句的Statement对象
Statement statement = connection.createStatement();
// Sql语句
String insert = "INSERT INTO per VALUES(NULL,'Tom',29,'北京')";
String update = "UPDATE per SET age=31,city='成都' where name='Iris'";
String delete = "DELETE FROM per WHERE name='Bunny'";
// 执行sql语句
statement.executeUpdate(insert);
statement.executeUpdate(update);
statement.executeUpdate(delete);
System.out.println("增删改命令执行成功!");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
在控制台查看数据库的内容,可以看到表中数据已经发生了改变。
- 查询表中的数据
package com.gyx.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCDemo {
private static Connection connection;
public static void main(String[] args) {
connection = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/jdbcDemo";
String username = "root";
String password = "123";
connection = DriverManager.getConnection(url, username, password);
// 得到返回的结果集对象
ResultSet resultSet = queryTable();
// 遍历结果集对象
while (resultSet != null && resultSet.next()) {
String item = resultSet.getInt("id") + " "
+ resultSet.getString("name") + " "
+ resultSet.getInt("age") + resultSet.getString("city");
System.out.println(item);
}
} catch (Exception e) {
e.printStackTrace();
}
}
// 用于查询的方法 返回结果集对象
public static ResultSet queryTable() {
try {
Statement statement = connection.createStatement();
String query = "SELECT * FROM per";
ResultSet resultSet = statement.executeQuery(query);
return resultSet;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
查询出表中的数据如下表:
到这里,使用JDBC进行基本的增删改查就学习完毕了。