在 net beans 中执行 jdbc 代码时出现空指针异常?

Null pointer exception while execution a jdbc code in net beans?

我正在将 ms 访问 odbc 和 odbc 连接到 javacode。

import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author aditya
 */
public class Odbc {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Connection con=null;Statement st=null;

        try {
          Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("driver loaded");           

        } catch (ClassNotFoundException ex) {
System.out.println(ex);           
        }
        try {
           con=DriverManager.getConnection("jdbc:odbc:studentdsn");
        } catch (SQLException ex) {
            Logger.getLogger(Odbc.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            Statement St = con.createStatement();
            String sql="insert into Student values(111,gfhgf,kjhk,123,jgfj)";  
 int n; 
 n=st.executeUpdate(sql);

这里..我收到运行时错误。引用空指针。

        } catch (SQLException ex) {
            System.out.println(ex);
        }


    }

}

您已将 con 定义为 null,然后尝试将其初始化为:

try {
       con=DriverManager.getConnection("jdbc:odbc:studentdsn");
} catch (SQLException ex) {
    Logger.getLogger(Odbc.class.getName()).log(Level.SEVERE, null, ex);
}

现在,如果您在创建连接时出现异常,您的连接仍然为空,然后您尝试使用空连接来创建如下语句:

try {
   Statement St = con.createStatement();

因此空指针异常。

在一个 try catch 块中创建所有 JDBC 连接相关语句,最重要的是找出连接创建失败的原因。

您有两个语句类型变量。您定义为 null 的一个:

Statement st=null;

和一个实际初始化的("s"这里是大写):

Statement St = con.createStatement();

然后你在空变量上调用一个函数:

n=st.executeUpdate(sql);