JDBC对象与方法
目录
Connection
Connection
接口表示应用程序与特定数据库之间的连接(会话)。
Connection con = DriverManager.getConnection(url, username, password);
PreparedStatement
PreparedStatement
用于执行预编译的SQL语句。预编译可以提高性能,并且有助于防止SQL注入攻击。
PreparedStatement ps= conn.prepareStatement("SELECT * FROM users WHERE id=?");
常用方法:
-
setXxx()
方法为预编译语句中的占位符设置值,例如ps.setInt(1, id);
-
executeUpdate()
用于执行SQL更新语句,如 INSERT、UPDATE 或 DELETE 语句。==此方法返回一个整数值,表示受影响的行数。== -
executeQuery()
用于执行SQL查询语句,如 SELECT 语句。==该方法返回一个 ResultSet 对象,包含查询的结果。==
ResultSet
ResultSet
用于存储由SQL查询语句返回的数据集。它提供了一种方式来遍历和读取结果表中的行。
通过调用 PreparedStatement
对象的 executeQuery()
方法来获取 ResultSet
。
ResultSet rs = pstmt.executeQuery();
使用 next()
方法移动到下一个行,使用 getXxx()
方法来读取列的值。
-
getXxx(int col)
通过顺序获取对应的值,从0开始 -
getXxx(String name)
通过列段名获取对应的值
JDBC修改操作:
-
数据库连接:使用JDBC连接数据库,包括配置数据库连接信息、加载数据库驱动、建立数据库连接,以及关闭数据库连接。
-
SQL语句:使用SQL语句执行修改操作,例如INSERT、UPDATE、DELETE等。
-
PreparedStatement:使用预编译的SQL语句进行修改操作,可以提高性能和安全性。
-
批量处理:JDBC支持批量处理操作,可以一次性执行多个修改操作,提高效率。
-
事务管理:使用JDBC事务管理机制,控制修改操作的原子性和一致性。
-
异常处理:处理可能出现的数据库操作异常,例如连接异常、SQL异常等。
-
数据库连接池:使用连接池管理数据库连接,提高系统的性能和资源利用率。
SQL语句
CREATE TABLE books (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
price DOUBLE NOT NULL,
description VARCHAR(255)
);
INSERT INTO books (title, price, description) VALUES
('飞天遇记', 29.99, '飞天之路充满欢笑和激情。'),
('时钟大冒险', 24.99, '打开神奇的时钟,卷入奇幻浪漫的冒险。');
根据id修改信息
// 获取用户输入的新信息
System.out.print("请输入新的标题(当前标题:" + book.getTitle() + "):");
String nt = sc.next();
System.out.print("请输入新的价格(当前价格:" + book.getPrice() + "):");
double np = sc.nextDouble();
System.out.print("请输入新的描述(当前描述:" + book.getDescription() + "):");
String nd = sc.next();
try {
// 获得连接
Connection con = DBHelper.getCon();
// 编写需要执行的sql语句
String sql = "UPDATE books SET title = ?, price = ?, description = ? WHERE id = ?";
// 通过sql语句与连接对象制出执行对象
PreparedStatement ps = con.prepareStatement(sql);
// 设置参数
ps.setString(1, nt);
ps.setDouble(2, np);
ps.setString(3, nd);
ps.setInt(4, bookId);
// 执行更新
int n = ps.executeUpdate();
if (n > 0) {
System.out.println("书籍信息已成功更新。");
} else {
System.out.println("书籍信息更新失败。");
}
} catch (Exception e) {
e.printStackTrace();
}
JDBC查询操作:
SQL语句
CREATE TABLE books (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
price DOUBLE NOT NULL,
description VARCHAR(255)
);
INSERT INTO books (title, price, description) VALUES
('飞天遇记', 29.99, '飞天之路充满欢笑和激情。'),
('时钟大冒险', 24.99, '打开神奇的时钟,卷入奇幻浪漫的冒险。');
模糊查询
List<Books> bookList = new ArrayList<>();
try {
// 获得连接
Connection con = DBHelper.getCon();
// 编写需要执行的sql语句
String sql = "SELECT id, title, price, description FROM books WHERE title LIKE ?";
// 通过sql语句与连接对象制出执行对象
PreparedStatement ps = con.prepareStatement(sql);
// 设置参数
ps.setString(1, "%" + 关键字 + "%");
// 执行语句 获得结果
ResultSet rs = ps.executeQuery();
// 处理结果集
while (rs.next()) {
int id = rs.getInt("id");
String title = rs.getString("title");
double price = rs.getDouble("price");
String description = rs.getString("description");
// 创建 Books 对象并设置属性
Books book = new Books(id, title, price, description);
// 将 Books 对象添加到列表中
bookList.add(book);
}
} catch (SQLException e) {
e.printStackTrace();
}
集合承载查询
List<Books> bookList = new ArrayList<>();
try {
// 获得连接
Connection con = DBHelper.getCon();
// 编写需要执行的sql语句
String sql = "SELECT id, title, price, description FROM books";
// 通过sql语句与连接对象制出执行对象
PreparedStatement ps = con.prepareStatement(sql);
// 执行语句 获得结果
ResultSet rs = ps.executeQuery();
// 处理结果集
while (rs.next()) {
int id = rs.getInt("id");
String title = rs.getString("title");
double price = rs.getDouble("price");
String description = rs.getString("description");
// 创建 Books 对象并设置属性
Books book = new Books(id, title, price, description);
// 将 Books 对象添加到列表中
bookList.add(book);
}
} catch (Exception e) {
e.printStackTrace();
}
// 输出集合的长度
System.out.println("总共有 " + bookList.size() + " 本书");
// 允许用户输入想要查看的书的序号
Scanner scanner = new Scanner(System.in);
System.out.print("请输入您想查看的书的序号:");
int index = scanner.nextInt();
Books book = bookList.get(index);
System.out.println(book);
原始查询
try {
// 获得连接
Connection con = DBHelper.getCon();
// 编写需要执行的sql语句
String sql = "SELECT id, title, price, description FROM books";
// 通过sql语句与连接对象制出执行对象
PreparedStatement ps = con.prepareStatement(sql);
// 执行语句 获得结果
ResultSet rs = ps.executeQuery();
// 处理结果集
while (rs.next()) {
int id = rs.getInt("id");
String title = rs.getString("title");
double price = rs.getDouble("price");
String description = rs.getString("description");
// 输出书籍信息
System.out.println("ID: " + id + ", 标题: " + title + ", 价格: " + price + ", 描述: " + description);
}
} catch (Exception e) {
e.printStackTrace();
}
区间查询(价格)
List<Books> bookList = new ArrayList<>();
try {
// 获得连接
Connection con = DBHelper.getCon();
// 编写需要执行的sql语句
String sql = "SELECT id, title, price, description FROM books WHERE price BETWEEN ? AND ?";
// 通过sql语句与连接对象制出执行对象
PreparedStatement ps = con.prepareStatement(sql);
// 设置参数
ps.setDouble(1, 价格1);
ps.setDouble(2, 价格2);
// 执行语句 获得结果
ResultSet rs = ps.executeQuery();
// 处理结果集
while (rs.next()) {
int id = rs.getInt("id");
String title = rs.getString("title");
double price = rs.getDouble("price");
String description = rs.getString("description");
// 创建 Books 对象并设置属性
Books book = new Books(id, title, price, description);
// 将 Books 对象添加到列表中
bookList.add(book);
}
} catch (SQLException e) {
e.printStackTrace();
}
查询分六步走
一.获得连接
二.编写需要执行的SQL语句
三.通过SQL语句连接对象制出执行对象
四.执行语句,获得结果
五.处理查询结果集
六。输出查询信息
标签:语句,JavaAPI.05,JDBC,description,rs,price,title,改查,id From: https://blog.csdn.net/yyayyl_xzq/article/details/143898203