gpt4 book ai didi

java - MySQL JDBC java 项目上出现 "AWT-EventQueue-0"java.lang.NullPointerException 错误

转载 作者:行者123 更新时间:2023-11-29 08:16:28 25 4
gpt4 key购买 nike

我是 ubuntu 新手,最近几天我安装了 eclipse 和 lamp 来处理已经在 windows7 上运行的项目。问题是同一串连接不起作用。这是我尝试连接的代码片段:

    String stringaConn = null;
String nomeClasse = null;
stringaConn = "jdbc:mysql://localhost/cinemapreverificasql?user=root";
nomeClasse = "com.mysql.jdbc.Driver";
try {
Class.forName(nomeClasse);
System.out.println("forName eseguito");
} catch (ClassNotFoundException e) {
System.out.println("Classe nomeClasse - Driver non trovata");
}
try {
f.conn = DriverManager.getConnection(stringaConn);
System.out.println("Aperta la connessione");
} catch (SQLException e) {
System.out.println("Stringa di connessione errata");
}

它进入第二个捕获并打印字符串“Stringa di connessione errata”。以下是输出示例:

forName eseguito
Stringa di connessione errata
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at gestioneDegliEventi.Gestione.windowOpened(Gestione.java:199)
at java.awt.Window.processWindowEvent(Window.java:2048)
at javax.swing.JFrame.processWindowEvent(JFrame.java:296)
at java.awt.Window.processEvent(Window.java:2009)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:694)
at java.awt.EventQueue$3.run(EventQueue.java:692)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:708)
at java.awt.EventQueue$4.run(EventQueue.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

在互联网上搜索我尝试了更改连接字符串的解决方案:

jdbc:mysql://localhost:3306/cinemapreverificasql?user=root

并使用sudo ufw allowed 3306给予权限,但出现的错误是相同的。可能是什么错误?

最佳答案

好的,现在您已经显示了实际爆炸的线路:

stmSql = f.conn.prepareStatement("select * from film");

并且f.conn为空。这是因为当您为 f.conn 赋值时,如果出现任何问题,您会打印出一条错误消息,然后继续前进,就像什么也没发生一样:

try {
f.conn = DriverManager.getConnection(stringaConn);
System.out.println("Aperta la connessione");
} catch (SQLException e) {
System.out.println("Stringa di connessione errata");
}

不要这样做。不要在此处捕获异常。您确实没有正确处理它,因为在 catch 语句之后您的对象还没有准备好使用。您还吞下了异常,而不显示其中的任何信息,这使得很难找出真正的错误。

您所展示的方法可能应该只是声明它可以抛出SQLException,然后不 try catch 任何内容。这样,如果出现问题,您会立即停止,而不是在注定会失败的情况下继续。

当您在实际记录异常的地方记录异常时,请记录整个异常 - 而不仅仅是一条表明出现问题的消息。异常信息完全有可能准确地告诉您连接字符串出了什么问题。

哦,您可能也不应该在 UI 线程中执行任何操作 - 但这是一个非常单独的问题。

关于java - MySQL JDBC java 项目上出现 "AWT-EventQueue-0"java.lang.NullPointerException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20522700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com