/**
* @description:
* 1、以下代码实现了JDBC连接 Mysql数据库,并实现增删改操作。
* 2、本代码将数据库的增删改操作的共用方法提取出来,因此 Utils类的方法同时适合
* 对数据库的增删改的操作,测试代码中仅放需要修改的具体数据。
* 3、(**重要**)由于本代码涉及到 IO流和数据库连接,需要关闭资源,因此对异常的
* 正确处理方式为:try...catch...finally。但这样做会颠倒步骤的顺序,代码的
* 主体将被不必要的捕捉异常所掩盖。为清晰显示步骤的前后连贯性,本代码使用throws抛出异常。
*/
//在jdbc.properties文件中配置资源,实现代码与数据分离,降低耦合性
user=root
password=123456
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
// ?useUnicode=true&characterEncoding=utf-8 设置避免在数据库中显示中文乱码
driverClass=com.mysql.jdbc.Driver
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Properties;
/**
* @author :Prannt
* @description:定义三个静态方法,分别用于:获取数据库的连接、执行sql语句、关闭资源
* @program : 1_14
* @date :2021/1/18 3:36
*/
public class Utils {
//获取数据库连接的方法
public static Connection getConnection() throws Exception {
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
Properties pros = new Properties();
pros.load(is);
String user = pros.getProperty("user");
String password = pros.getProperty("password");
String url = pros.getProperty("url");
String driverClass = pros.getProperty("driverClass");
//加载驱动
Class.forName(driverClass);
//获取连接
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
}
//执行sql语句的方法
public static void update(String sql,Object...args) throws Exception { //sql中占位符的个数与可变形参的长度必须一致
//1.获取数据库的连接
Connection conn = Utils.getConnection();
//2.预编译sql语句,返回PreparedStatement的实例
PreparedStatement ps = conn.prepareStatement(sql);
//3.填充占位符
for (int i = 0; i < args.length; i++) {
ps.setObject(i + 1,args[i]);
}
//4.执行
ps.execute();
//5.关闭资源
Utils.closeResource(conn,ps);
}
//关闭资源的方法
public static void closeResource(Connection conn, PreparedStatement ps) throws Exception {
conn.close();
ps.close();
}
}
import java.sql.Connection;
/**
* @author :Prannt
* @description:测试在 user表中增添一条数据
* @program : 1_14
* @date :2021/1/18 3:48
*/
public class Test {
public static void main(String[] args) throws Exception {
//1.获取数据库的连接
Connection conn = Utils.getConnection();
//2.预编译sql语句,返回PreparedStatement的实例
String sql = "insert into user(id,name,password,address,phone) values(?,?,?,?,?)";
Utils.update(sql,"6","测试","523652","China","14598654896");
}
}
//结果如下图所示
同理可实现数据库的删、该操作,查询操作与之不同。