JDBC的工具类的抽取二 报错

来源:4-2 JDBC的工具类的抽取二

xuan一

2019-12-02 10:32:12

http://img.mukewang.com/climg/5de4771d093c962b10680707.jpg----------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回答

好帮手慕小班

2019-12-02

同学你好,根据同学贴出的报错信息,在JDBCUtils中报出了空指针异常的错误,同学在配置文件中书写的是driverClass

http://img.mukewang.com/climg/5de4d43c0961657e02770065.jpg

但是在JDBCUtils中获取时获取的是driveClass,少写了一个字母让,导致没有加载到,修改后:

http://img.mukewang.com/climg/5de4d56009aef66a05000098.jpg

如上修改后,就可以正常执行连接数据库,并执行sql语句。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

0

0 学习 · 8016 问题

查看课程