Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 语句stmt=conn.CreateStatement处出现空指针异常。我是新手,我找不到解决办法?_Java_Mysql_Jdbc_Nullpointerexception - Fatal编程技术网

Java 语句stmt=conn.CreateStatement处出现空指针异常。我是新手,我找不到解决办法?

Java 语句stmt=conn.CreateStatement处出现空指针异常。我是新手,我找不到解决办法?,java,mysql,jdbc,nullpointerexception,Java,Mysql,Jdbc,Nullpointerexception,这个程序的思想是使用一个图形界面连接到数据库,该界面为用户提供更改或更新数据库的选项。它从DriverManager连接开始,编写方法以供JRadioButton选项调用(是的,我知道这是单选按钮的一种不寻常的用法)。GUI调用这些方法,但从这些方法中,尽管通过驱动程序管理器创建了连接,但似乎仍然存在通过conn的空指针异常。如果有人能向我解释为什么它仍然指向null,而不是DriverManager.getConnection,我将不胜感激? 谢谢 GUI单独工作正常,但似乎没有通过Drive

这个程序的思想是使用一个图形界面连接到数据库,该界面为用户提供更改或更新数据库的选项。它从DriverManager连接开始,编写方法以供JRadioButton选项调用(是的,我知道这是单选按钮的一种不寻常的用法)。GUI调用这些方法,但从这些方法中,尽管通过驱动程序管理器创建了连接,但似乎仍然存在通过conn的空指针异常。如果有人能向我解释为什么它仍然指向null,而不是DriverManager.getConnection,我将不胜感激? 谢谢

GUI单独工作正常,但似乎没有通过DriverManager连接连接到数据库

        Query myGUI = new Query();

    }

    private static void insertLecturer() throws SQLException {
        String a = JOptionPane.showInputDialog("Insert: LID");
        String b = JOptionPane.showInputDialog("Insert FirstName");
        String c = JOptionPane.showInputDialog("Insert LastName");
        String d = JOptionPane.showInputDialog("Insert Salary");
这一行(下面)指向空连接?但不明白或不明白为什么

    Statement stmt = conn.createStatement();
        String sql = "INSERT INTO Lecturer VALUES " + "(" + a + " " + "'" + b
                + "'" + " " + "'" + c + "'" + " " + d + ")" + ";";
        stmt.executeUpdate(sql);

    }
使用GUI中的ActionEvent调用SQL方法。
}

    public void actionPerformed(ActionEvent a) {

        if (a.getActionCommand() == first) {
            try {
                insertLecturer();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

如果在下一行中出现空指针异常

Statement stmt = conn.CreateStatement
这意味着您的conn连接对象为空。检查数据库配置

添加一个空检查,如下所示

if(conn != null) {
   Statement stmt = conn.CreateStatement

}

您注释“创建连接对象”的部分实际上没有创建任何对象,因此您的连接为空


首先使用
DriverManager
创建
连接
对象。任何教程都会显示它是如何完成的。

在调用
getData
之前,您是否正在调用
openDatabase

如果没有,则
conn
为空,并且
conn.createStatement
将触发
null指针异常

试试这个:

if (conn == NULL) 
{ 
openDatabase(); 
}
就在您的
conn.createStatement

Statement stmt= conn.createStatement(); 
显然,
conn
null指针

也就是说他的台词

conn = DriverManager.getConnection (url, userName, password);
大概是没有设法给
conn
赋值


这可能意味着
DriverManager
找不到他想要的连接。

粘贴堆栈跟踪。如果代码太多,您有堆栈跟踪吗?错误在哪一行?那条线是什么?什么变量是空的?初始化它,使其不为空。您从未初始化
conn
,因为您从未调用
getConnection
(顺便说一句:在连接中使用实例变量通常是个坏主意,使用静态变量更糟)恐怕我对所有这些都不熟悉,我不知道堆栈跟踪是什么?我指出它是哪一个错误,这是根据你的评论编辑问题的那一行,希望它现在更友好。空检查是无用的。此时连接为null是业务逻辑中的一个错误。我让DriverManager创建连接:public connection getConnection()抛出SQLException{try{Class.forName(“com.mysql.jdbc.Driver”);conn=DriverManager.getConnection(“jdbc:mysql://localhost/Uni",“resit”,“summer1”);是的,但您在尝试创建语句之前从未调用getConnection()。请删除
conn
实例变量,并将其设置为getConnection()方法的本地变量。然后您将被迫编写正确的代码(至少与此问题有关)。感谢您的回复,conn实例已被删除,这是我添加进来试图解决我的问题的东西。但问题仍然存在,我使用的是eclipse,整个界面表明我的代码没有问题,这是我的问题。程序会执行,但只有在我尝试输入信息时,它才会出现问题conn中出现空指针异常。我缺少了什么/我在哪里缺少了在连接中创建conn和通过GUI在主方法中调用它之间的基本链接?再次感谢使用数据库连接时,请确保使用
getConnection()获得它
方法。每次。我都没有使用openDatabase或getData,只是使用了DriverManager。在所有教程中,我已经看过了,它说的所有内容都是使用DriverManager打开连接,我确实需要,但不知怎的,连接没有被检索到,或者正在使用空值重新创建?谢谢,这可能是需要修改的吗o连接没有传递到我的GUI?如果是这样的话,你知道我可以如何纠正吗?
conn = DriverManager.getConnection (url, userName, password);