抽取JDBC工具类并增删改查

时间:2023-11-23 22:55:08

抽取工具类:

package demo;
/*
* 工具类
*/ import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet; public class JDBCUtils1 { public static Connection getConnection() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mybase";
String username = "root";
String password = "xuyiqing";
conn = DriverManager.getConnection(url, username, password);
} catch (Exception ex) {
ex.printStackTrace();
}
return conn;
} public static void release(Connection conn, PreparedStatement pstmt, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (pstmt != null) {
try {
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
} }
}

数据准备:

CREATE DATABASE mybase;
USE mybase;
CREATE TABLE users(
uid INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(64),
upassword VARCHAR(64)
);
INSERT INTO users (username,upassword) VALUES("zhangsan","123"),("lisi","456"),("wangwu","789");
SELECT * FROM users;

根据主键id查询:

package demo;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet; import org.junit.Test; public class TestUtils { @Test
public void testFindUserById() {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = JDBCUtils1.getConnection();
String sql = "select * from users where uid=?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 2);
rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString(2) + "----" + rs.getString("upassword"));
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
JDBCUtils1.release(conn, pstmt, rs);
}
}
}

第二种抽取工具类方式:

配置文件(src目录下):db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybase
username=root
password=xuyiqing

工具类:

package demo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ResourceBundle; public class JDBCUtils2 { public static String driver;
public static String url;
public static String username;
public static String password; static{
ResourceBundle bundle = ResourceBundle.getBundle("db");
driver = bundle.getString("driver");
url = bundle.getString("url");
username = bundle.getString("username");
password = bundle.getString("password");
} public static Connection getConnection() {
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, username, password);
} catch (Exception ex) {
ex.printStackTrace();
}
return conn;
} public static void release(Connection conn, PreparedStatement pstmt, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (pstmt != null) {
try {
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
} }
}

插入数据:

package demo;

import java.sql.Connection;
import java.sql.PreparedStatement; import org.junit.Test; public class TestUtils {
@Test
public void testAdd() {
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = JDBCUtils2.getConnection();
String sql = "insert into users values(null,?,?)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "xiaoming");
pstmt.setString(2, "666");
int row = pstmt.executeUpdate();
if (row > 0) {
System.out.println("添加成功");
} else {
System.out.println("添加失败");
}
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
JDBCUtils2.release(conn, pstmt, null);
}
}
}

第三种抽取工具类方式:

依然使用db.properties配置文件:

package demo;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties; public class JDBCUtils3 {
public static String driver;
public static String url;
public static String username;
public static String password; static {
try {
ClassLoader classLoader = JDBCUtils3.class.getClassLoader();
InputStream is = classLoader.getResourceAsStream("db.properties");
Properties props = new Properties();
props.load(is);
driver = props.getProperty("driver");
url = props.getProperty("url");
username = props.getProperty("username");
password = props.getProperty("password");
} catch (Exception ex) {
ex.printStackTrace();
}
} public static Connection getConnection() {
Connection conn = null;
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, username, password);
} catch (Exception ex) {
ex.printStackTrace();
}
return conn;
} public static void release(Connection conn, PreparedStatement pstmt, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (pstmt != null) {
try {
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
} }
}

删除和修改数据:

package demo;

import java.sql.Connection;
import java.sql.PreparedStatement; import org.junit.Test; public class TestUtils { /*
* 删除
*/
@Test
public void testDelete() {
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = JDBCUtils3.getConnection();
String sql = "delete from users where uid=?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 3);
int row = pstmt.executeUpdate();
if (row > 0) {
System.out.println("删除成功");
} else {
System.out.println("删除失败");
}
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
JDBCUtils3.release(conn, pstmt, null);
}
} /*
* 修改
*/
@Test
public void testUpdate() {
Connection conn = null;
PreparedStatement pstmt = null;
try {
conn = JDBCUtils3.getConnection();
String sql = "update users set upassword=? where uid=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "123456789");
pstmt.setInt(2, 2);
int row = pstmt.executeUpdate();
if (row > 0) {
System.out.println("修改成功");
} else {
System.out.println("修改失败");
}
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
JDBCUtils3.release(conn, pstmt, null);
}
}
}