JDBC的工具类的抽取二 报错
来源:4-2 JDBC的工具类的抽取二
xuan一
2019-12-02 10:32:12
----------JDBCDemo3.java----------
package com.immoc.JDBC.demo1;
import java.sql.Connection;
import java.sql.Statement;
import com.imooc.jdbc.utils.JDBCUtils;
import org.junit.Test;
public class JDBCDemo3 {
@Test
//保存记录
public void demo1() {
Connection conn = null;
Statement stmt =null;
try {
//获得连接
conn = JDBCUtils.getConnection();
//创建执行SQL语句的对象
stmt = conn.createStatement();
//编写SQL:
String sql = "insert into test(id,name,room,job,salary) values (7, 'wuwu', '1','dajia', '7000')";
//执行SQL:
int i = stmt.executeUpdate(sql);
if(i>0) {
System.out.println("保存成功");
}
}catch(Exception e) {
e.printStackTrace();
}finally {
//释放资源
JDBCUtils.release(stmt, conn);
}
}
}
-------------jdbc.properties-------------
driverClass=com.mysql.cj.jdbc.Driver
url=jdbc:mysql:///jdbc_test?useSSL=false&serverTimezone=Hongkong&useUnicode=true&characterEncoding=utf-8
username=root
password=1234
---------------JDBCUtiles.java---------------
package com.imooc.jdbc.utils;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
/**
* JDBC工具类
* */
public class JDBCUtils {
private static final String driveClass;
private static final String url;
private static final String username;
private static final String password;
static {
//加载属性文件并解析
Properties props = new Properties();
//获得属性输入流
//使用类的加载器的获取方式
InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
try {
props.load(is);
} catch (IOException e) {
e.printStackTrace();
}
driveClass=props.getProperty("driveClass");
url=props.getProperty("url");
username=props.getProperty("username");
password= props.getProperty("password");
}
/**
* 注册驱动的方法
* @throws ClassNotFoundException *
*/
public static void loadDriver() throws ClassNotFoundException {
Class.forName(driveClass);
}
/**
* 获得连接*/
public static Connection getConnection() throws SQLException, ClassNotFoundException{
loadDriver();
Connection conn = DriverManager.getConnection(url,username,password);
return conn;
}
/**
* 资源释放*/
public static void release(Statement stmt, Connection conn) {
if(stmt !=null) {
try {
stmt.close();
}catch(SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if(conn !=null) {
try {
conn.close();
}catch(SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
public static void release(Statement stmt, Connection conn, ResultSet rs) {
if(rs !=null) {
try {
rs.close();
}catch(SQLException e) {
e.printStackTrace();
}
rs = null;
}
if(stmt !=null) {
try {
stmt.close();
}catch(SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if(conn !=null) {
try {
conn.close();
}catch(SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
}
1回答
同学你好,根据同学贴出的报错信息,在JDBCUtils中报出了空指针异常的错误,同学在配置文件中书写的是driverClass
但是在JDBCUtils中获取时获取的是driveClass,少写了一个字母让,导致没有加载到,修改后:
如上修改后,就可以正常执行连接数据库,并执行sql语句。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题