JDBC-Java连接Mysql工具类
首选需要一个配置文件 setting.properties
里面写上连接字符串,和你的服务器的超级管理员的账号密码
格式如下
#Thu Apr 07 16:14:58 CST 2022
pass=root123
user=root
url=jdbc\:mysql\://localhost\:3306/db11070326
也可以用代码来生成
代码如下
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
public class pro1 {
public static void main(String[] args) throws IOException {
Properties properties = new Properties();
// 存值
properties.setProperty("user","root");
properties.setProperty("pass","root123");
properties.setProperty("url","jdbc:mysql://localhost:3306/db11070326");
// 定义个字符流
FileWriter fileWriter = new FileWriter("setting.properties");
//
properties.store(fileWriter,null);
fileWriter.close();
}
}
工具类代码如下
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public class JDBCUtils {
// 获取双列集合
private static Properties properties = new Properties();
static {
try {
// 获得字符数据流对象
FileReader fileReader = new FileReader("setting.properties");
properties.load(fileReader);
// 关闭字符输入流对象
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
// 定义返回值
Connection conn = null;
try {
// 注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 准备数据,连接字符串,用户名,密码
String connStr = properties.getProperty("url");
String user = properties.getProperty("user");
String pass = properties.getProperty("pass");
// 获取连接对象
conn = DriverManager.getConnection(connStr, user, pass);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
// 返回连接对象
return conn;
}
}
工具类添加关闭资源的方法
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.*;
import java.util.Properties;
public class JDBCUtils {
// 获取双列集合
private static Properties properties = new Properties();
static {
try {
// 获得字符数据流对象
FileReader fileReader = new FileReader("setting.properties");
properties.load(fileReader);
// 关闭字符输入流对象
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
// 定义返回值
Connection conn = null;
try {
// 注册驱动
Class.forName("com.mysql.jdbc.Driver");
// 准备数据,连接字符串,用户名,密码
String connStr = properties.getProperty("url");
String user = properties.getProperty("user");
String pass = properties.getProperty("pass");
// 获取连接对象
conn = DriverManager.getConnection(connStr, user, pass);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
// 返回连接对象
return conn;
}
// 关闭连接对象
public static void close(Connection conn){
// 判断连接对象是否为空
if (conn == null){
return;
}
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
// 关闭连接对象和执行者
public static void close(Connection conn, Statement stmt){
if (stmt != null) {
try {
stmt.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
close(conn);
}
// 关闭连接对象和执行者
public static void close(Connection conn, Statement stmt, ResultSet rs){
if (rs != null) {
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
close(conn,stmt);
}
}
下面是使用效果
这是数据库
这是第一个版本,没有用到连接池
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class TestLogin {
public static void main(String[] args) throws SQLException {
// 扫描仪
Scanner scanner = new Scanner(System.in);
// 欢迎语句
System.out.println("欢迎你");
System.out.println("请输入用户名:");
String user = scanner.next();
System.out.println("请输入密码:");
String pass = scanner.next();
// 拿数据去查
// 使用JDBC去查
Connection conn = JDBCUtils.getConnection();
// 获取执行者
Statement stmt = conn.createStatement();
String sql = String.format("SELECT * FROM `user` WHERE uname = '%s' AND pwd = '%s';", user, pass);
ResultSet rs = stmt.executeQuery(sql);
if (rs.next()) {
System.out.println("登录成功");
} else {
System.out.println("登录失败");
}
// 关闭资源
JDBCUtils.close(conn, stmt, rs);
}
}
第二个版本使用连接池
利用这个版本较好,需要修改 druid.properties 配置文件名
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/db3
username=root
password=root
initialSize=5
maxActive=10
maxWait=3000
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;
public class JDBCUtils {
// 连接池
private static DataSource ds = null;
// 获取双列集合
private static Properties properties = new Properties();
static {
Properties pro = new Properties();
InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
try {
pro.load(is);
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
// 定义返回值
Connection conn = null;
try {
conn = ds.getConnection();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
// 返回连接对象
return conn;
}
// 关闭连接对象
public static void close(Connection conn){
// 判断连接对象是否为空
if (conn == null){
return;
}
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
// 关闭连接对象和执行者
public static void close(Connection conn, Statement stmt){
if (stmt != null) {
try {
stmt.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
close(conn);
}
// 关闭连接对象和执行者
public static void close(Connection conn, Statement stmt, ResultSet rs){
if (rs != null) {
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
close(conn,stmt);
}
}
第三个版本添加获得数据源
package D3;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBCUtils {
// 连接池
private static DataSource ds = null;
// 获取双列集合
private static Properties properties = new Properties();
static {
Properties pro = new Properties();
InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
try {
pro.load(is);
ds = DruidDataSourceFactory.createDataSource(pro);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection() {
// 定义返回值
Connection conn = null;
try {
conn = ds.getConnection();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
// 返回连接对象
return conn;
}
// 获取数据源
public static DataSource getDs(){
return ds;
}
// 关闭连接对象
public static void close(Connection conn){
// 判断连接对象是否为空
if (conn == null){
return;
}
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
// 关闭连接对象和执行者
public static void close(Connection conn, Statement stmt){
if (stmt != null) {
try {
stmt.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
close(conn);
}
// 关闭连接对象和执行者
public static void close(Connection conn, Statement stmt, ResultSet rs){
if (rs != null) {
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
close(conn,stmt);
}
}