上网搜了下,1可能是未实例化
            2可以是在方法体中调用参数的方法。这种情况下,如果调用方法的时候传递进来的值是null,也要产生NullPointerException异常
 自己弄了好久没搞出来,请高手帮忙!
package com.tool;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class JDBConnection { private final String DRIVER = "net.sourceforge.jtds.jdbc.Driver"; // 连接sql数据库的方法 private final String URL = "jdbc:jtds:sqlserver://localhost:1433/db_sell"; private final String USERNAME = "sa"; private final String PASSWORD = "sa"; private Connection conn = null; public JDBConnection() {
try {
Class.forName(DRIVER).newInstance(); // 加载数据库驱动
} catch (Exception ex) {
System.out.println("加载数据库驱动失败!");
}
} public boolean creatConnection() {// 用来创建数据库连接
boolean isCreated = true;// 默认创建成功
try {
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);// 创建数据库连接
} catch (SQLException e) {
isCreated = false;// 创建失败
}
return isCreated;// 返回创建情况
} public boolean executeUpdate(String sql) {// 用来插入、修改和删除记录
boolean isUpdate = true;// 默认执行成功
if (conn == null)
creatConnection();
try {
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
} catch (SQLException e) {
isUpdate = false;// 执行失败
}
return isUpdate;// 返回执行情况
} public ResultSet executeQuery(String sql) {// 用来查询记录
ResultSet rs = null;
if (conn == null)
creatConnection();
try {                     //此处报错。
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return rs;// 返回查询结果集
} public void closeConnection() {// 用来关闭数据库连接
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
conn = null;
}
}
}}

解决方案 »

  1.   

    应该是connection没有被成功创建,你可以在创建statement之前判断下connection为不为空
      

  2.   

    你是连接sqlserver还是?
      看你的代码好像是连接sqlserver,你看看这样行不行
      private final String URL = "jdbc:jtds:sqlserver://localhost:1433/db_sell"; 
    改成private final String URL = "jdbc:jtds:sqlserver://localhost:1433;databasename=数据库名称";