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