java - 不能以不同的 Jframe 形式推进(Logger.getLogger 方法)
问题描述
我在我的库中添加了rs2xml和derby,它在一开始就可以工作,但是在为我的表添加 derby 和刷新功能的连接后,JFrame
表单无法继续到下一个JFrame
表单
这些是移动到下一个的代码,JFrame
但它不起作用但没有错误
int confirmed = JOptionPane.showConfirmDialog(null,
"Are you sure you want to Continue to Stock Table?",
"Confirm Button Message Box",
JOptionPane.YES_NO_OPTION);
if (confirmed == JOptionPane.YES_OPTION) {
try {
new InformationofCafe().setVisible(true);
this.setVisible(false);
} catch (SQLException ex) {
Logger.getLogger(Menu.class.getName()).log(Level.SEVERE, null, ex);
}
} else {
JOptionPane.showMessageDialog(Menu.this, "Cancelled");
}
这些是JFrame
我希望得到的形式的代码,但它不会推进到那种JFrame
形式。
public class InformationofCafe extends javax.swing.JFrame {
Connection con;
Statement stmt;
ResultSet rs;
int cursorRow = 0;
public InformationofCafe() throws SQLException {
initComponents();
DoConnect();
update_table();
}
void update_table() throws SQLException {
rs=stmt.executeQuery("SELECT * FROM STOCK");
jTable.setModel(DbUtils.resultSetToTableModel(rs));
}
public Connection DoConnect() {
try {
String host ="jdbc:derby://localhost:1527//Downtown";
String uName ="miguel";
String uPass ="miguel";
con = DriverManager.getConnection(host, uName, uPass);
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE );
String sql = "SELECT * FROM STOCK";
rs = stmt.executeQuery(sql);
rs.next();
int id_col = rs.getInt("ITEM");
String id = Integer.toString(id_col);
String description = rs.getString("DESCRIPTION");
String amount = rs.getString("AMOUNT");
TextItem.setText(id);
TextDescription.setText(description);
TextAmount.setText(amount);
update_table();
}
catch (SQLException err) {
JOptionPane.showMessageDialog(InformationofCafe.this,
err.getMessage());
}
return con;
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
try {
new InformationofCafe().setVisible(true);
} catch (SQLException ex) {
Logger.getLogger(InformationofCafe.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
}
我尝试了我所知道的一切。甚至在互联网上搜索了该做什么,但似乎找不到解决方案。我知道这是导致错误的原因try
,我只是不知道如何解决它:(catch
logger.getlogger
这是错误日志
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at activity3.InformationofCafe.update_table(InformationofCafe.java:33)
at activity3.InformationofCafe.<init>(InformationofCafe.java:29)
at activity3.Menu.InformationActionPerformed(Menu.java:130)
at activity3.Menu.access$000(Menu.java:23)
at activity3.Menu$1.actionPerformed(Menu.java:62)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
解决方案
您的问题与Swing无关。而且我也不明白为什么你用sql-server标记它,因为你声明你正在使用Derby。
您无法连接到数据库,即您的代码的以下行引发了异常。
con = DriverManager.getConnection(host, uName, uPass);
随后,stmt
类的成员InformationofCafe
未初始化,因此为空。
您的代码处理数据库连接错误的方式是在JOptionPane
. 这意味着您的程序继续运行,并且当它到达您的代码的以下行时,它会抛出,NullPointerException
因为它stmt
是 null。
rs=stmt.executeQuery("SELECT * FROM STOCK");
我建议您编写一个简单的程序,没有尝试连接到 Derby 然后执行 SQL 查询的 GUI。一旦你做对了,你就可以在你的 GUI 中修复代码。您是否阅读过 Derby 的文档?
如果连接到数据库或从数据库检索数据出现问题,您需要考虑您希望 GUI 程序做什么。你不应该忽略它。仅显示错误消息本质上是忽略错误。
推荐阅读
- javascript - 如何在 React App 中的页面加载时不调用所有组件
- oauth-2.0 - Spring boot OAuth2在尝试使用访问令牌获取资源时获得访问被拒绝异常
- angular - mat-pagination 和 sort 在 ngx-bootstrap 模式下不起作用
- python - 将集合转换为列表时,是什么决定了项目顺序?
- python - 如何删除“
“来自 json 响应” “? - java - 如何从回历日期转换为格鲁吉亚日期,反之亦然
- firebase - 使用 Firebase 身份验证和 Rest Api 让用户永久登录 Flutter
- c# - 在 API MVC 中删除列/调整模型
- javascript - 如何在反应前面显示节点数组
- php - 从给定的字符串生成数组