java连接数据库,用到了PreparedStatement接口,出现这样的异常:
Exception in thread "main" java.lang.NullPointerException
at com.gay.PreTest.display(PreTest.java:64)
at com.gay.PreTest.main(PreTest.java:87)
但如果不用PreparedStatement接口就可以访问数据,不知道是哪里错了。下面是源文件:
package com.gay;import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.sql.ResultSet;
public class PreTest {
    private Connection con;
    private String url;
    private String serverName;
    private String portNumber;
    private String databaseName;
    private String userName;
    private String password;
    private String sql;
    public PreTest() {
        url = "jdbc:microsoft:sqlserver://";
        serverName = "localhost";
        portNumber = "1433";
        databaseName = " gao";
        userName = "sa";
        password = "sa";
    }    private String getConnectionUrl() {
        return url + serverName + ":" + portNumber + ";databaseName=" +
                databaseName + ";";
    };    private Connection getConnection() {
        try {
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
            con = DriverManager.getConnection(getConnectionUrl(), userName,
                                              password);
            if (con != null) {
                System.out.println("连接成功!");
            }
        } catch (ClassNotFoundException ex) {
        } catch (SQLException ex) {
            /** @todo Handle this exception */
        }
        return con;
    }    public void display() {        try {
            con = getConnection();
            PreparedStatement pstmt = con.prepareStatement(
                    "update info set address=? where name=?");
            pstmt.setString(1, "武汉");
            pstmt.setString(2, "李四");
            pstmt.executeUpdate();
            System.out.println("记录更新!");
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery("select *from info");
            while (rs.next()) {
                System.out.print(rs.getString(1) + "\t");
                System.out.print(rs.getString(2) + "\t");
                System.out.print(rs.getInt(3) + "\t");
                System.out.print(rs.getString(4) + "\n");
            }
            rs.close();
            st.close();
            con.close();
        } catch (SQLException ex) {
        }
    }    public static void main(String[] args) {
        PreTest test = new PreTest();
        test.display();
    }
}

解决方案 »

  1.   

    空指针错误,看看你代码的64行,看看是哪个变量是NULL值.
      

  2.   

    你的PreTest没有得到connection你怎么用PreparedStatement 啊
      

  3.   

    找不到PreTest.java:87 这一行在那,也就判断PreTest.java:64不是我复制出来的那一行。一眼过去看不出问题在那。你的程序从有很多问题,试提出几个
    getConnection() 从你是可以输出 null的,在display() 中没有进行检测。你对抛出的Exception 从不做处理,最少要打印出来。你可以在网上找找java的Exception 处理规范。