运行时出错

运行时出错

1、运行的项目名

package com.jdbc.Demo;


import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;


import com.jdbc.Demo.JDBCUtils;;


public class Demo {


public static void main(String[] args) {

Connection conn = null;

PreparedStatement pstmt = null;

ResultSet rs = null;

try {

conn = JDBCUtils.getConnection();

String sql="select * from user";

pstmt = conn.prepareStatement(sql);

rs =pstmt.executeQuery();

   while(rs.next()) {

    System.out.println(rs.getInt("uid")+"  "+rs.getString("username")

    +"  "+rs.getString("password")+"  "+rs.getString("name"));

   }

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

finally {

JDBCUtils.release(rs, pstmt, conn);

}

}


}



2、下面是调用JDBC的类


package com.jdbc.Demo;



import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Properties;


/**

 * JDBC的工具类

 * @author 

 *

 */

//慕课代码

public class JDBCUtils {

private static final String driverClass;

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 (Exception e) {

e.printStackTrace();

}

driverClass = props.getProperty("driverClass");

url = props.getProperty("url");

username = props.getProperty("username");

password = props.getProperty("password");

}


/**

* 注册驱动的方法

* @throws ClassNotFoundException 

*/

public static void loadDriver() throws ClassNotFoundException{

Class.forName(driverClass);

}

/**

* 获得连接的方法:

* @throws SQLException 

*/

public static Connection getConnection() throws Exception{

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(ResultSet rs,Statement stmt,Connection conn){

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;

}

}

//PreparedStatement

public static void release(ResultSet rs,PreparedStatement pstmt,Connection conn){

if(rs!= null){

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

rs = null;

}

if(pstmt != null){

try {

pstmt.close();

} catch (SQLException e) {

e.printStackTrace();

}

pstmt = null;

}

if(conn != null){

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

conn = null;

}

}

public static void release(PreparedStatement pstmt,Connection conn){

if(pstmt != null){

try {

pstmt.close();

} catch (SQLException e) {

e.printStackTrace();

}

pstmt = null;

}

if(conn != null){

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

conn = null;

}

}

}


3、下面是properties配置文件


driverClass=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/jdbctest

username=root

password=85120651qwert


4、运行出现的错误


java.lang.NullPointerException: inStream parameter is null

at java.base/java.util.Objects.requireNonNull(Objects.java:246)

at java.base/java.util.Properties.load(Properties.java:365)

at com.jdbc.Demo.JDBCUtils.<clinit>(JDBCUtils.java:35) //这行的代码是props.load(is);

at com.jdbc.Demo.Demo.main(Demo.java:18) //这行的代码是conn = JDBCUtils.getConnection();

java.lang.NullPointerException

at java.base/java.lang.Class.forName0(Native Method)

at java.base/java.lang.Class.forName(Class.java:292)

at com.jdbc.Demo.JDBCUtils.loadDriver(JDBCUtils.java:51)   //这行指的代码是Class.forName(driverClass);

at com.jdbc.Demo.JDBCUtils.getConnection(JDBCUtils.java:59) //这行指的代码是loadDriver();

at com.jdbc.Demo.Demo.main(Demo.java:18)   //这行的代码是conn = JDBCUtils.getConnection();


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

代码在我这个运行时没有问题的,看一下jdbc.properties文件是否放到了src目录下,截一下你的工程目录图看看。

另外,你直接把老师的代码导入eclipse运行看看是否有问题

祝学习愉快!

  • 慕尼黑7895541 提问者 #1
    jdbc.properties文件之前放在包里的,现在直接粘贴在src目录就运行成功了. 非常感谢!
    2018-02-27 11:04:10
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java数据库开发与实战应用2018版
  • 参与学习           人
  • 提交作业       277    份
  • 解答问题       4297    个

Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师