JDBC中数据库的增删改查操作
一、数据库编程一般过程
图为数据库编程的一般过程,其中查询(Read)过程最多需要7个步骤,修改(C插入、U 更新、D删除)过程最多需要5个步骤。这个过程采用了预编译语句对象进行数据操作,所以有可能进 行绑定参数。
在编程之前先交代一下config.properties文件:
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/JAVA
user=root
password=199911
useSSL=false
verifyServerCertificate=false
准备好的数据库
二、数据查询操作
(1)有条件查询
代码如下:
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
/** * @author : 蔡政洁 * @email :caizhengjie888@icloud.com * @date : 2020/3/2 * @time : 3:48 下午 */
//不使用自动资源管理
public class CRUDSample1 {
// 连接数据库
static String url;
// 创建properties对象
static Properties info = new Properties();
// 1.驱动程序加载,放在静态代码块中,在静态代码块中读取属性文件内容到Properties对象和加载驱动程序,这两个操作只需执行一次
static {
// 获得属性文件输入流
InputStream inputStream = CRUDSample1.class.getClassLoader().getResourceAsStream("config.properties");
try {
// 加载属性文件内容到Properties对象
info.load(inputStream);
// 从属性文件中读取URL
url = info.getProperty("url");
// 从属性文件中读取driver
String driverClassname = info.getProperty("driver");
// 驱动程序加载
Class.forName(driverClassname);
System.out.println("驱动程序加载成功");
} catch (IOException e) {
System.out.println("加载属性文件失败");
e.printStackTrace();
} catch (ClassNotFoundException e) {
System.out.println("驱动程序加载失败");
e.printStackTrace();
}
}
//主函数
public static void main(String[] args) {
// 查询数据
read();
}
// 数据查询操作
public static void read(){
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
// 2.创建数据库连接
conn = DriverManager.getConnection(url,info);
System.out.println("数据库连接成功");
// 3.创建语句对象,返回PreparedStatement对象
// 这里查询的是数据库中id大于2的人的姓名和年龄
pstmt = conn.prepareStatement("select name,age from xinxi_tb where id > ? order by id");
// 4.绑定参数
/** * 绑定参数时需要注意两个问题:绑定参数顺序 和 绑定参数的类型 * 绑定参数索引是 从1开始的,而不是从0开始的。 * 根据绑定参数的类型不同选择对应的set方法。 */
pstmt.setInt(1,3);
// 5.执行查询
rs = pstmt.executeQuery();
// 6.遍历结果集
while (rs.next()){
/**注意点:列名对应的数据类型,rs.getX就对应什么,例如(name: %s,rs.getString("name"或者为 1 )) *rs.getX(可以设置为columnindex = (查找的列的索引,从1开始索引),或columnLabel = "列名") */
System.out.printf("name: %s,age: %d\n",rs.getString(1),rs.getInt("age"));
}
} catch (SQLException e) {
e.printStackTrace();
// 7.释放资源,这里也可以选择自动资源管理
}finally {
if (rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (pstmt != null){
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null){
try {
conn.close();
}catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
运行结果:
驱动程序加载成功
数据库连接成功
name: 雷军,age: 43
name: 马云,age: 56
name: 马化腾,age: 49
(2)无条件查询
代码如下:
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
/** * @author : 蔡政洁 * @email :caizhengjie888@icloud.com * @date : 2020/3/2 * @time : 6:01 下午 */
//使用自动资源管理系统
public class CRUDSample2 {
// 连接数据库
static String url;
// 创建properties对象
static Properties info = new Properties();
// 1.驱动程序加载,放在静态代码块中,在静态代码块中读取属性文件内容到Properties对象和加载驱动程序,这两个操作只需执行一次
static {
// 获得属性文件输入流
InputStream inputStream = CRUDSample2.class.getClassLoader().getResourceAsStream("config.properties");
try {
// 加载属性文件内容到Properties对象
info.load(inputStream);
// 从属性文件中读取URL
url = info.getProperty("url");
// 从属性文件中读取driver
String driverClassname = info.getProperty("driver");
// 驱动程序加载
Class.forName(driverClassname);
System.out.println("驱动程序加载成功");
} catch (IOException e) {
System.out.println("加载属性文件失败");
e.printStackTrace();
} catch (ClassNotFoundException e) {
System.out.println("驱动程序加载失败");
e.printStackTrace();
}
}
//主函数
public static void main(String[] args) {
// 查询最大的用户id
System.out.println(readMaxUserID());
}
// 查询最大的用户id
public static int readMaxUserID(){
int maxid = 0;
try (
// 2.创建数据库连接
Connection conn = DriverManager.getConnection(url,info);
// 3.创建语句对象
PreparedStatement pstmt = conn.prepareStatement("select max(id) from xinxi_tb");
// 4。执行查询
ResultSet rs = pstmt.executeQuery()
){
// 打印数据库连接信息
System.out.println("数据库连接成功");
// 5.遍历结果集
if (rs.next()){
maxid = rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
return maxid;
}
}
运行结果:
驱动程序加载成功
数据库连接成功
6
三、数据插入
代码如下:
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Properties;
/** * @author : 蔡政洁 * @email :caizhengjie888@icloud.com * @date : 2020/3/2 * @time : 6:15 下午 */
//使用自动资源管理系统
public class CRUDSample3 {
// 连接数据库
static String url;
// 创建properties对象
static Properties info = new Properties();
// 1.驱动程序加载,放在静态代码块中,在静态代码块中读取属性文件内容到Properties对象和加载驱动程序,这两个操作只需执行一次
static {
// 获得属性文件输入流
InputStream inputStream = CRUDSample2.class.getClassLoader().getResourceAsStream("config.properties");
try {
// 加载属性文件内容到Properties对象
info.load(inputStream);
// 从属性文件中读取URL
url = info.getProperty("url");
// 从属性文件中读取driver
String driverClassname = info.getProperty("driver");
// 驱动程序加载
Class.forName(driverClassname);
System.out.println("驱动程序加载成功");
} catch (IOException e) {
System.out.println("加载属性文件失败");
e.printStackTrace();
} catch (ClassNotFoundException e) {
System.out.println("驱动程序加载失败");
e.printStackTrace();
}
}
//主函数
public static void main(String[] args) {
// 数据插入操作
create();
}
public static void create(){
try (
// 2.创建数据库连接
Connection conn = DriverManager.getConnection(url,info);
// 3.创建语句对象
PreparedStatement pstmt = conn.prepareStatement("insert into xinxi_tb (id, name, age) values (?,?,?)");
){
// 打印数据库连接信息
System.out.println("数据库连接成功");
// 4.绑定参数
pstmt.setInt(1,6);
pstmt.setString(2,"马化腾");
pstmt.setInt(3,49);
// 5.执行修改
// 行executeUpdate()方法执行SQL语句,该 方法与查询方法executeQuery()不同。executeUpdate()方法返回的是整数,成功影响的记录数, 即成功插入记录数。
int affectedRows = pstmt.executeUpdate();
System.out.printf("成功插入%d条数据\n",affectedRows);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
这里要根据自己数据库的实际情况来修改代码,才能运行
四、数据更新
代码如下:
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Properties;
/** * @author : 蔡政洁 * @email :caizhengjie888@icloud.com * @date : 2020/3/2 * @time : 6:40 下午 */
//使用自动资源管理系统
public class CRUDSample4 {
// 连接数据库
static String url;
// 创建properties对象
static Properties info = new Properties();
// 1.驱动程序加载,放在静态代码块中,在静态代码块中读取属性文件内容到Properties对象和加载驱动程序,这两个操作只需执行一次
static {
// 获得属性文件输入流
InputStream inputStream = CRUDSample4.class.getClassLoader().getResourceAsStream("config.properties");
try {
// 加载属性文件内容到Properties对象
info.load(inputStream);
// 从属性文件中读取URL
url = info.getProperty("url");
// 从属性文件中读取driver
String driverClassname = info.getProperty("driver");
// 驱动程序加载
Class.forName(driverClassname);
System.out.println("驱动程序加载成功");
} catch (IOException e) {
System.out.println("加载属性文件失败");
e.printStackTrace();
} catch (ClassNotFoundException e) {
System.out.println("驱动程序加载失败");
e.printStackTrace();
}
}
//主函数
public static void main(String[] args) {
// 数据更新操作
update();
}
public static void update(){
try (
// 2.创建数据库连接
Connection conn = DriverManager.getConnection(url,info);
// 3.创建语句对象
PreparedStatement pstmt = conn.prepareStatement("update xinxi_tb set name = ? where id = ?");
){
// 打印数据库连接信息
System.out.println("数据库连接成功");
// 4.绑定参数
pstmt.setString(1,"雷军");
pstmt.setInt(2,4);
// 5.执行修改
int affectedRows = pstmt.executeUpdate();
System.out.printf("成功更新%d条数据\n",affectedRows);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
这里要根据自己数据库的实际情况来修改代码,才能运行
五、数据删除
代码如下:
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Properties;
/** * @author : 蔡政洁 * @email :caizhengjie888@icloud.com * @date : 2020/3/2 * @time : 6:49 下午 */
//使用自动资源管理系统
public class CRUDSample5 {
// 连接数据库
static String url;
// 创建properties对象
static Properties info = new Properties();
// 1.驱动程序加载,放在静态代码块中,在静态代码块中读取属性文件内容到Properties对象和加载驱动程序,这两个操作只需执行一次
static {
// 获得属性文件输入流
InputStream inputStream = CRUDSample2.class.getClassLoader().getResourceAsStream("config.properties");
try {
// 加载属性文件内容到Properties对象
info.load(inputStream);
// 从属性文件中读取URL
url = info.getProperty("url");
// 从属性文件中读取driver
String driverClassname = info.getProperty("driver");
// 驱动程序加载
Class.forName(driverClassname);
System.out.println("驱动程序加载成功");
} catch (IOException e) {
System.out.println("加载属性文件失败");
e.printStackTrace();
} catch (ClassNotFoundException e) {
System.out.println("驱动程序加载失败");
e.printStackTrace();
}
}
//主函数
public static void main(String[] args) {
// 数据删除操作
delete();
}
public static void delete(){
try (
// 2.创建数据库连接
Connection conn = DriverManager.getConnection(url,info);
// 3.创建语句对象
PreparedStatement pstmt = conn.prepareStatement("delete from xinxi_tb where id = ?");
){
// 打印数据库连接信息
System.out.println("数据库连接成功");
// 4.绑定参数
pstmt.setInt(1, 3);
// 5.执行修改
int affectedRows = pstmt.executeUpdate();
System.out.printf("成功删除%d条数据\n",affectedRows);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
这里要根据自己数据库的实际情况来修改代码,才能运行
总结:学好数据库编程还是需要掌握一些MySQL的基本语句,如果您想更多的了解MySQL常用命令,可以详见连接https://blog.csdn.net/weixin_45366499/article/details/104585167
相信它一定对您有帮助!
以上内容仅供参考学习,如有侵权请联系我删除!
如果这篇文章对您有帮助,左下角的大拇指就是对博主最大的鼓励。
您的鼓励就是博主最大的动力!
还没有评论,来说两句吧...