帮我写一个新手能看懂的jdbc通用工具类,要求能够增删改查,我的数据库是mysql,注释要详细
时间: 2023-05-25 16:05:50 浏览: 128
本文将为您介绍如何编写一个jdbc通用工具类,包括增删改查操作。我们使用MySQL作为数据库。
前置要求:
- 了解基本的Java编程知识。
- 了解JDBC的基本概念,如连接、语句执行等。
步骤:
1. 加载驱动程序
首先需要加载mysql的驱动程序,具体方法是:
```java
public class DBUtil {
static {
try {
Class.forName("com.mysql.jdbc.Driver"); // 加载mysql驱动
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 其他代码
}
```
2. 建立数据库连接
在加载驱动程序后,需要建立数据库连接。具体方法是:
```java
public class DBUtil {
private Connection conn;
private String url = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";
private String username = "root"; // 数据库用户名
private String password = "root"; // 数据库密码
public Connection getConn() throws SQLException {
if(conn == null){
conn = DriverManager.getConnection(url,username,password); // 建立数据库连接
}
return conn;
}
// 其他代码
}
```
可以看到,我们建立了Connection对象作为成员变量,通过getConn()方法获取连接,如果已经存在连接,则直接返回,否则建立新连接。
3. 执行SQL语句
执行SQL语句需要先创建语句.Statement是连接对象的方法之一,它可以用来创建Statement或PreparedStatement。具体方法是:
```java
public int executeUpdate(String sql,Object[] params) throws SQLException{
PreparedStatement pstmt = getConn().prepareStatement(sql);
if(params!=null){
for(int i=0;i<params.length;i++){
pstmt.setObject(i+1,params[i]); // 设置参数
}
}
int result = pstmt.executeUpdate(); // 执行更新
return result;
}
```
这个方法接收两个参数,第一个是SQL语句,第二个是参数数组。执行更新语句时,我们需要使用PreparedStatement来预编译SQL语句,将参数传入预编译的语句中。
在此基础上,我们可以添加其他的通用方法,如查询、删除等:
```java
public class DBUtil {
// 查询操作
public ResultSet executeQuery(String sql,Object[] params) throws SQLException{
PreparedStatement pstmt = getConn().prepareStatement(sql);
if(params!=null){
for(int i=0;i<params.length;i++){
pstmt.setObject(i+1,params[i]);
}
}
ResultSet rs = pstmt.executeQuery(); // 执行查询
return rs;
}
// 删除操作
public int executeDelete(String sql,Object[] params) throws SQLException{
return executeUpdate(sql,params);
}
// 修改操作
public int executeUpdate(String sql,Object[] params) throws SQLException{
// 代码
}
}
```
4. 完整工具类代码
```java
import java.sql.*;
/**
* JDBC通用工具类
*/
public class DBUtil {
private Connection conn;
private String url = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";
private String username = "root";
private String password = "root";
public DBUtil() {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public Connection getConn() throws SQLException {
if(conn == null){
conn = DriverManager.getConnection(url,username,password);
}
return conn;
}
/**
* 执行查询操作,返回结果集
* @param sql SQL查询语句
* @param params 参数数组,可为null
* @return 查询结果集
* @throws SQLException SQL异常
*/
public ResultSet executeQuery(String sql,Object[] params) throws SQLException{
PreparedStatement pstmt = getConn().prepareStatement(sql);
if(params!=null){
for(int i=0;i<params.length;i++){
pstmt.setObject(i+1,params[i]);
}
}
ResultSet rs = pstmt.executeQuery();
return rs;
}
/**
* 执行添加、删除、修改操作,返回受影响的行数
* @param sql SQL语句
* @param params 参数数组,可为null
* @return 受影响的行数
* @throws SQLException SQL异常
*/
public int executeUpdate(String sql,Object[] params) throws SQLException{
PreparedStatement pstmt = getConn().prepareStatement(sql);
if(params!=null){
for(int i=0;i<params.length;i++){
pstmt.setObject(i+1,params[i]);
}
}
int result = pstmt.executeUpdate();
return result;
}
/**
* 关闭数据库连接,释放资源
* @throws SQLException SQL异常
*/
public void close() throws SQLException{
if(conn!=null){
conn.close();
conn = null; // 设置对象为空,有助于垃圾回收机制回收资源
}
}
}
```
这个工具类可以用来执行数据库的增删改查操作,提高了效率和代码重用度。
总结:
学习JDBC对于Java开发来说十分重要,这使得开发人员能够非常容易地与数据库进行交互。 JDBC的工具类可以大大简化SQL语句的执行和结果的处理,可以方便地进行操作。
阅读全文