【发布时间】:2023-03-19 22:50:02
【问题描述】:
这是我输入的代码
// loading all distict age on to list bix from student table
private void b1ActionPerformed(java.awt.event.ActionEvent evt) {
DefaultTableModel tb = (DefaultTableModel)tb1.getModel();
tb.setRowCount(0);
String sql = "select * from student";
try
{
Class.forName("java.sql.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/info","root","");
Statement s = con.createStatement();
ResultSet rs = s.executeQuery(sql);
while(rs.next())
{
int s_rno = rs.getInt(1);
String s_name = rs.getString(2);
int s_age = rs.getInt(3);
double s_marks = rs.getDouble(4);
tb.addRow(new Object[]{s_rno, s_name, s_age, s_marks});
tb1.setModel(tb);
}
rs.close();
s.close();
con.close();
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this, e.getMessage());
}
}
当我运行程序时,会出现 GUI,但按下按钮时,什么也没有发生,并且我的输出窗口出现以下错误
线程“AWT-EventQueue-0”java.lang.ClassCastException 中的异常: JDBC2$2 不能转换为 javax.swing.DefaultListModel 在 JDBC2.b1ActionPerformed(JDBC2.java:74) 在 JDBC2.access$000(JDBC2.java:9) 在 JDBC2$1.actionPerformed(JDBC2.java:36) 在 javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 在 javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) 在 javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 在 javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 在 javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) 在 java.awt.Component.processMouseEvent(Component.java:6535) 在 javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 在 java.awt.Component.processEvent(Component.java:6300) 在 java.awt.Container.processEvent(Container.java:2236) 在 java.awt.Component.dispatchEventImpl(Component.java:4891) 在 java.awt.Container.dispatchEventImpl(Container.java:2294) 在 java.awt.Component.dispatchEvent(Component.java:4713) 在 java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) 在 java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) 在 java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 在 java.awt.Container.dispatchEventImpl(Container.java:2280) 在 java.awt.Window.dispatchEventImpl(Window.java:2750) 在 java.awt.Component.dispatchEvent(Component.java:4713) 在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 在 java.awt.EventQueue.access$500(EventQueue.java:97) 在 java.awt.EventQueue$3.run(EventQueue.java:709) 在 java.awt.EventQueue$3.run(EventQueue.java:703) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) 在 java.awt.EventQueue$4.run(EventQueue.java:731) 在 java.awt.EventQueue$4.run(EventQueue.java:729) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 在 java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
我需要更多帮助,我该如何理解错误。
【问题讨论】:
-
你能把这个声明
Class.forName("java.sql.Driver");替换成这个声明DriverManager.registerDriver(new com.mysql.jdbc.Driver());,让我知道状态吗? -
@N00bPr0grammer 为什么?两者都不是必需的,也与例外没有任何关系。
-
@OP 第 74 行是哪一行?而
Class.forName("java.sql.Driver");什么都没做,应该被删除,Netbeans 和它没有任何关系。 -
谢谢@EJP,今天我有新东西要向你学习!