JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。

使用JDBC应用程序创建新数据库需要以下步骤:
在执行以下示例之前,请确保您已经准备好以下操作:
具有数据库管理员权限,以在给定模式中创建数据库。 要执行以下示例,需要用实际用户名和密码替换这里用户名(username)和密码(password)。
MySQL或数据库已启动并运行。
创建测试数据库
CREATE DATABASE easilyj;创建测试表
CREATE TABLE `user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(255) DEFAULT NULL,
`user_password` varchar(255) DEFAULT NULL,
PRIMARY KEY (`user_id`)
);import java.sql.Connection;
import java.sql.DriverManager;
public class CreateDatabase {
private static String url = "jdbc:mysql://localhost:3306/jsptest"; // 数据库地址
private static String userName = "root"; // 数据库用户名
private static String passWord = "123456"; // 数据库密码
private static Connection conn = null;
// 获得数据库连接
public static Connection getConnection() {
if (null == conn) {
try {
Class.forName("com.mysql.jdbc.Driver"); // 加载驱动
conn = DriverManager.getConnection(url, userName, passWord); // 创建数据库连接
} catch (Exception e) {
e.printStackTrace();
System.out.println("JDBC 连接数据库失败");
}
}
return conn;
}
public static void main(String[] args) {
System.out.println("JDBC 连接数据库成功");
System.out.println("JDBC 连接地址为:" + getConnection());
}
}连接成功之后会返回一个获得的连接的内存地址,运行结果:
JDBC 连接数据库成功
JDBC 连接地址为:com.mysql.jdbc.JDBC4Connection@5a10411import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class InsertDate {
private static String url = "jdbc:mysql://localhost:3306/jsptest"; // 数据库地址
private static String userName = "root"; // 数据库用户名
private static String passWord = "123456"; // 数据库密码
private static Connection conn = null;
public static Connection getConnection() {
if (null == conn) {
try {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 创建数据库连接
conn = DriverManager.getConnection(url, userName, passWord);
} catch (Exception e) {
e.printStackTrace();
}
}
return conn;
}
public static void main(String[] args) {
// 准备sql
String sql = "INSERT INTO user(user_name, user_password) VALUES ('兮动人', '123456')";
Connection conn = getConnection();
PreparedStatement pst = null;
try {
// 创建预编译语句
pst = conn.prepareStatement(sql);
// 执行SQL
pst.executeUpdate();
System.out.println("JDBC 插入成功");
// 关闭资源
pst.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("JDBC 插入失败");
}
}
}运行结果:
JDBC 插入成功import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class UpdateDate {
private static String url = "jdbc:mysql://localhost:3306/jsptest"; // 数据库地址
private static String userName = "root"; // 数据库用户名
private static String passWord = "123456"; // 数据库密码
private static Connection conn = null;
public static Connection getConnection() {
if (null == conn) {
try {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 创建数据库连接
conn = DriverManager.getConnection(url, userName, passWord);
} catch (Exception e) {
e.printStackTrace();
}
}
return conn;
}
public static void main(String[] args) {
// 准备sql
String sql = "update user set user_name='大海绵', user_password='654321' where user_id=1";
Connection conn = getConnection();
PreparedStatement pst = null;
try {
// 创建预编译语句
pst = conn.prepareStatement(sql);
// 执行SQL
pst.executeUpdate();
System.out.println("JDBC 更新成功");
// 关闭资源
pst.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("JDBC 更新失败");
}
}
}运行结果:
JDBC 更新成功建议再执行一遍新增,这样数据库就有两条数据,方便观察结果。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class SelectDate {
private static String url = "jdbc:mysql://localhost:3306/jsptest"; // 数据库地址
private static String userName = "root"; // 数据库用户名
private static String passWord = "123456"; // 数据库密码
private static Connection conn = null;
public static Connection getConnection() {
if (null == conn) {
try {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 创建数据库连接
conn = DriverManager.getConnection(url, userName, passWord);
} catch (Exception e) {
e.printStackTrace();
}
}
return conn;
}
public static void main(String[] args) {
// 准备sql
String sql = "select * from user";
Connection conn = getConnection();
PreparedStatement pst = null;
try {
// 创建预编译语句
pst = conn.prepareStatement(sql);
// 执行SQL
ResultSet rst = pst.executeQuery();
while (rst.next()) {
System.out.print(rst.getInt("user_id"));
System.out.print(rst.getString("user_name"));
System.out.println(rst.getString("user_password"));
}
System.out.println("JDBC 查询成功");
// 关闭资源
pst.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("JDBC 查询失败");
}
}
}运行结果:
1兮动人654321
2兮动人123456
JDBC 查询成功import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class SelectByIdDate {
private static String url = "jdbc:mysql://localhost:3306/jsptest"; // 数据库地址
private static String userName = "root"; // 数据库用户名
private static String passWord = "123456"; // 数据库密码
private static Connection conn = null;
public static Connection getConnection() {
if (null == conn) {
try {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 创建数据库连接
conn = DriverManager.getConnection(url, userName, passWord);
} catch (Exception e) {
e.printStackTrace();
}
}
return conn;
}
public static void main(String[] args) {
// 准备sql
String sql = "select * from user where user_id = 1";
Connection conn = getConnection();
PreparedStatement pst = null;
try {
// 创建预编译语句
pst = conn.prepareStatement(sql);
// 执行SQL
ResultSet rst = pst.executeQuery();
while (rst.next()) {
System.out.print(rst.getInt("user_id"));
System.out.print(rst.getString("user_name"));
System.out.println(rst.getString("user_password"));
}
System.out.println("JDBC 条件查询成功");
// 关闭资源
pst.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("JDBC 条件查询失败");
}
}
}运行结果:
1雲兮动人654321
JDBC 条件查询成功import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DeleteDate {
private static String url = "jdbc:mysql://localhost:3306/jsptest"; // 数据库地址
private static String userName = "root"; // 数据库用户名
private static String passWord = "123456"; // 数据库密码
private static Connection conn = null;
public static Connection getConnection() {
if (null == conn) {
try {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 创建数据库连接
conn = DriverManager.getConnection(url, userName, passWord);
} catch (Exception e) {
e.printStackTrace();
}
}
return conn;
}
public static void main(String[] args) {
// 准备sql
String sql = "delete from user where user_id = 2";
Connection conn = getConnection();
PreparedStatement pst = null;
try {
// 创建预编译语句
pst = conn.prepareStatement(sql);
// 执行SQL
pst.executeUpdate();
System.out.println("JDBC 删除成功");
// 关闭资源
pst.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("JDBC 删除失败");
}
}
}运行结果:
JDBC 删除成功经过上面的学习,会发现增删改查都有很多共同点,不同之处只是SQL语句和接收返回值的方式不同,那么为了使程序的复用性更好,我们通常把相同的代码提取出来。下面的代码演示一个通过提取出来的工具类进行新增操作。
DBUtil工具类
import java.sql.Connection;
import java.sql.DriverManager;
public class DBUtil {
private static String url = "jdbc:mysql://localhost:3306/jsptest"; // 数据库地址
private static String userName = "root"; // 数据库用户名
private static String passWord = "123456"; // 数据库密码
private static Connection conn = null;
public static Connection getConnection() {
if (null == conn) {
try {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 创建数据库连接
conn = DriverManager.getConnection(url, userName, passWord);
} catch (Exception e) {
e.printStackTrace();
}
}
return conn;
}
public static void main(String[] args) {
// 测试数据库是否连通
System.out.println(getConnection());
}
}新增数据改为以下代码:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class InsertDate {
public static void main(String[] args) {
// 准备sql
String sql = "INSERT INTO user(user_name, user_password) VALUES ('3兮动人', '123456')";
Connection conn = DBUtil.getConnection();
PreparedStatement pst = null;
try {
// 创建预编译语句
pst = conn.prepareStatement(sql);
// 执行SQL
pst.executeUpdate();
System.out.println("JDBC 插入成功");
// 关闭资源
pst.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("JDBC 插入失败");
}
}
}同样的,可以将增删改查都改成这种方式,使代码更加的简洁,更具有逻辑性和复用性。