一、JDBCUtils类设计
1、静态代码块——读取配置文件,获取driver,url,user,password
2、静态方法——注册驱动、获取数据库连接
3、静态方法——关闭资源
二、项目实例
1、用户表
user表用来存储用户的账号信息。
create database test;
use test;
create table user(
id int primary key auto_increment,
account varchar(20),
password varchar(20),
nickname varchar(20)
);
insert into user(account,password,nickname) values('Jack','123456','杰克');
insert into user(account,password,nickname) values('Mary','888888','玛丽');
select*from user;
2、项目结构
db.properties存放jdbc的相关配置信息。JDBCUtils类实现jdbc连接操作。JDBCUtilsTest是测试类。
1、db.properties
1、右击项目,建一个目录resource,标为资源目录。
右击该目录新建文件db.properties:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=root123
2、JDBCUtils.java
右击src,建一个包net.jdbc,utils。右击这个包新建类JDBCUtils.java:
package net.jdbc.utils;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
import java.util.ResourceBundle;
public class JDBCUtils {
//数据库url、用户名和密码
private static String driver;//Ctrl+Alt+F抽取全局静态变量
private static String url;
private static String username;
private static String password;
/*读取属性文件,获取jdbc信息*/
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 connection = null;
try {
//1、注册JDBC驱动
Class.forName(driver);
/* 2、获取数据库连接 */
connection = DriverManager.getConnection(url,username,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
/*关闭结果集、数据库操作对象、数据库连接*/
public static void release(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet) {
if(resultSet!=null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(preparedStatement!=null) {
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
3、JDBCUtilsTest.java
在JDBCUtils.java文件中,按快捷键Ctrl+Shift+T,生成测试文件JDBCUtilsTest.java,代码的具体实现:
package net.jdbc.utils;
import org.junit.Test;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import static org.junit.Assert.*;
public class JDBCUtilsTest {
@Test
public void JDBCTest() throws Exception{
//获取数据库连接
Connection connection = JDBCUtils.getConnection();
//操作数据库
String sql="select nickname from user where account=?";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,"Jack");
ResultSet resultSet = preparedStatement.executeQuery();
if(resultSet.next()){
String nickname = resultSet.getString("nickname");
System.out.println(nickname);
}
//关闭数据库
JDBCUtils.release(connection,preparedStatement,resultSet);
}
}
运行结果: