java.lang.NullPointerException    db.DBClass.executeUpdate(DBClass.java:124)
程序如下:package db;import java.sql.*;public class DBClass {
private String driver;
private String url;
private String name;
private String password;
private Connection conn;
private Statement state;
private String message = ""; public DBClass() {
driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=JPKC";
name = "";
password = "";
conn = null;
state = null;
message = "";
} public DBClass(String driver, String url, String name, String password,
Connection conn, Statement state, String message) {
super();
this.driver = driver;
this.url = url;
this.name = name;
this.password = password;
this.conn = conn;
this.state = state;
this.message = message;
} public String getDriver() {
return driver;
} public void setDriver(String driver) {
this.driver = driver;
} public String getUrl() {
return url;
} public void setUrl(String url) {
this.url = url;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public Connection getConn() {
return conn;
} public void setConn(Connection conn) {
this.conn = conn;
} public Statement getState() {
return state;
} public void setState(Statement state) {
this.state = state;
} public String getMessage() {
return message;
} public void setMessage(String message) {
this.message = message;
} public void connect() {
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, name, password);
state = conn.createStatement();
} catch (ClassNotFoundException cnfe) {
message = "" + cnfe;
} catch (SQLException sqle) {
message = "" + sqle;
} } public ResultSet executeQuery(String query) // 查询
{
ResultSet rs = null;
try {
rs = state.executeQuery(query);
} catch (SQLException sqle) {
message = "" + sqle;
}
return rs;
} public void executeUpdate(String update) { try {
state.executeUpdate(update);
} catch (SQLException sqle) {
message = "" + sqle;
}
} public void close() {
try {
conn.close();
} catch (SQLException sqle) {
message = "" + sqle;
}
}
}

解决方案 »

  1.   

    在public void connect()中重新赋值了啊!
      

  2.   

    調試一下,先看conn是否為空,或不為空,再對你的State作一個判斷,if(state==null)時賦值,不是null時不賦值
      

  3.   

    你应该把里如何掉用DBClass的代码也贴一下。
      

  4.   

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;public class DBCon {
    public static String driver="oracle.jdbc.driver.OracleDriver";
    public static String url="jdbc:oracle:thin:@192.168.0.174:1521:ORCL";
    public static String user="scott";
    public static String pwd="tiger";

    public static Connection getConnection(){
    try {
    Class.forName(driver);
    Connection con=DriverManager.getConnection(url, user, pwd);
    System.out.println("con success");
    return con;
    } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return null;
    }

    public static void close(Connection con,Statement stm,ResultSet rs){
    if(con!=null){
    try {
    con.close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    if(stm!=null){
    try {
    stm.close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    if(rs!=null){
    try {
    rs.close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }

    public static void main(String[] args) {
    DBCon.getConnection();
    }
    }
      

  5.   

    掉用DBClass的代码:String sql="insert into userinfo values("+"\'"+userid+"\'"+","
    +"\'"+pwd+"\'"+","
    +"\'"+name+"\'"+","
    +"\'"+sex+"\'"+","
    +"\'"+tel+"\'"+","
    +"\'"+email+"\'"+","
    +"\'"+dept+"\'"+")";
    DBClass db=new DBClass();
    db.connect();
    db.executeUpdate(sql);
    db.close();
      

  6.   

    以上方法我都试过了,还是不行,
    我用的是window xp 的系统,eclipse+tomcat 开发的,没有打补丁,
    我看网上说的也可以不打补丁
      

  7.   

    请大家帮帮忙!!
    修改了一下,还是出现这个错误:Exception in thread "main" java.lang.NullPointerException
    at db.DBClass.executeQuery(DBClass.java:117)
    at db.DBClass.main(DBClass.java:155)package db;import java.sql.*;public class DBClass {
    private String driver;
    private String url;
    private String name;
    private String password;
    private Connection conn;
    private Statement state;
    private String message = ""; public DBClass() {
    driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
    url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=JPKC";
    name = "";
    password = "";
    conn = null;
    state = null;
    message = "";
    } public DBClass(String driver, String url, String name, String password,
    Connection conn, Statement state, String message) {
    super();
    this.driver = driver;
    this.url = url;
    this.name = name;
    this.password = password;
    this.conn = conn;
    this.state = state;
    this.message = message;
    } public String getDriver() {
    return driver;
    } public void setDriver(String driver) {
    this.driver = driver;
    } public String getUrl() {
    return url;
    } public void setUrl(String url) {
    this.url = url;
    } public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    } public String getPassword() {
    return password;
    } public void setPassword(String password) {
    this.password = password;
    } public Connection getConn() {
    return conn;
    } public void setConn(Connection conn) {
    this.conn = conn;
    } public Statement getState() {
    return state;
    } public void setState(Statement state) {
    this.state = state;
    } public String getMessage() {
    return message;
    } public void setMessage(String message) {
    this.message = message;
    } public void connect() {
    try {
    Class.forName(driver);
    if (conn == null) {
    conn = DriverManager.getConnection(url, name, password);
    }
    if (state == null) {
    state = conn.createStatement();
    }
    } catch (ClassNotFoundException cnfe) {
    message = "" + cnfe;
    } catch (SQLException sqle) {
    message = "" + sqle;
    } } public ResultSet executeQuery(String query) // 查询
    {
    ResultSet rs = null;
    try {
    rs = state.executeQuery(query);
    } catch (SQLException sqle) {
    message = "" + sqle;
    }
    return rs;
    } public int executeUpdate(String update) {
    int flag = 1;
    try {
    flag = state.executeUpdate(update);
    } catch (SQLException sqle) {
    message = "" + sqle;
    }
    return flag;
    } public void close() { if (conn != null) {
    try {
    conn.close();
    } catch (SQLException sqle) {
    message = "" + sqle;
    }
    }
    if (state != null) {
    try {
    state.close();
    } catch (SQLException sqle) {
    message = "" + sqle;
    }
    }
    }
    public static void main(String args[]){

    DBClass db=new DBClass();
    db.connect();
          ResultSet st = db.executeQuery("select * from userinfo"); 
          try {
    while (st.next()) { 
       System.out.println("TestName:"+st.getString("1") + " <BR/>"); 
      }
    } catch (SQLException e) {
    e.printStackTrace();

          db.close(); 
    }
    }
      

  8.   

    兄弟你代码不是一般的乱啊
     你为什么不用一个实体包(entity),一个javaBean
    你这样写不利于代码阅读,不利于找错
      

  9.   

    这个是用来测试用的,写在一起的!这个运行起来就有错,如果这个能运行,其它的也可以了啊!
    我是在bean中加了个Main()方法。方便测试!
    请大家帮帮忙!
      

  10.   

    at db.DBClass.executeQuery(DBClass.java:117) 出错的这行是什么内容?
      

  11.   

    出错的是MAIN()方法里的: 
    ResultSet st = db.executeQuery("select * from userinfo"); 
    这个方法没有执行吧