小弟想用 snumber 将相关的两个表的内容返回到结果集,并显示在JTable的对应列,找不到问题
多谢大牛们~~~
if (e.getSource() == jbTwo) { // jt.removeAll(); for (int i = 0; i < jt.getRowCount(); i++) { String t_Num = jt.getValueAt(i, 0).toString();
int t_Math = Integer.parseInt(jt.getValueAt(i, 10).toString());
int t_Politic = Integer.parseInt(jt.getValueAt(i, 11)
.toString());
int t_English = Integer.parseInt(jt.getValueAt(i, 12)
.toString());
int t_FMajor = Integer
.parseInt(jt.getValueAt(i, 13).toString());
int total = t_Math + t_Politic + t_English + t_FMajor;
// System.out.println(total);
if (total > 250) {
sql = "select student.snumber,sname,ssex,sage,spolity,sthisyear,sedubackgroud,sroot,mname,scategory,maths,english,politics,f_major from student,firsttest where student.snumber =firsttest.snumber and student.snumber='0001'"; try {
oo.ps = oo.con.prepareStatement(sql);
oo.ps.setString(1, t_Num);
oo.rs = oo.ps.executeQuery();
// oo.stmt = oo.con.createStatement();
// oo.rs = oo.stmt.executeQuery(sql);
while (oo.rs.next()) {
// String t_Number =
// oo.rs.getString("student.snumber");
String t_Name = oo.rs.getString("Sname");
String t_Sex = oo.rs.getString("Ssex");
String t_Age = oo.rs.getString("Sage");
String t_Polity = oo.rs.getString("Spolity");
String t_Thisyear = oo.rs.getString("Sthisyear");
String t_EduBackgroud = oo.rs
.getString("Sedubackgroud");
String t_Root = oo.rs.getString("Sroot");
String t_Major = oo.rs.getString("Mname");
String t_Category = oo.rs.getString("Scategory");
String t_maths = oo.rs.getString("maths");
String t_english = oo.rs.getString("english");
String t_politics = oo.rs.getString("politics");
String t_major = oo.rs.getString("f_major");
// System.out.println(t_Num + " " + t_Name + " "
// + t_Sex + " " + t_Age + " " + t_Polity
// + " " + t_Thisyear + " " + t_EduBackgroud
// + " " + t_Root + " " + t_Major + " "
// + t_Category + " " + t_maths + " "
// + t_english + " " + t_politics + " "
// + t_major); String[] Info = { t_Num, t_Name, t_Sex, t_Age,
t_Polity, t_Thisyear, t_EduBackgroud,
t_Root, t_Major, t_Category, t_maths,
t_english, t_politics, t_major };
model.addRow(Info);
jt.setModel(model);
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
错误如下:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.clearParameter(JdbcOdbcPreparedStatement.java:1023)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setChar(JdbcOdbcPreparedStatement.java:3057)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setString(JdbcOdbcPreparedStatement.java:766)
at com.AdministratorSystem.actionPerformed(AdministratorSystem.java:144)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【aaronhanfei】截止到2008-06-30 19:26:21的历史汇总数据(不包括此帖):
    发帖数:5                  发帖分:210                
    结贴数:5                  结贴分:210                
    未结数:0                  未结分:0                  
    结贴率:100.00%            结分率:100.00%            
    敬礼!
      

  2.   

    不好意思,sql最后为student.snumber=?
    sql = "select student.snumber,sname,ssex,sage,spolity,sthisyear,sedubackgroud,sroot,mname,scategory,maths,english,politics,f_major from student,firsttest where student.snumber =firsttest.snumber and student.snumber=?"; 
    异常为:
    java.sql.SQLException: [Oracle][ODBC][Ora]ORA-01000: maximum open cursors exceeded
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
    at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
    at sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:3149)
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(JdbcOdbcPreparedStatement.java:216)
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeQuery(JdbcOdbcPreparedStatement.java:91)
    at com.AdministratorSystem.actionPerformed(AdministratorSystem.java:145)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6038)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
    at java.awt.Component.processEvent(Component.java:5803)
    at java.awt.Container.processEvent(Container.java:2058)
    at java.awt.Component.dispatchEventImpl(Component.java:4410)
    at java.awt.Container.dispatchEventImpl(Container.java:2116)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    at java.awt.Container.dispatchEventImpl(Container.java:2102)
    at java.awt.Window.dispatchEventImpl(Window.java:2429)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
    java.sql.SQLException: [Oracle][ODBC][Ora]ORA-01000: maximum open cursors exceeded
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
    at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
    at sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:3149)
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(JdbcOdbcPreparedStatement.java:216)
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeQuery(JdbcOdbcPreparedStatement.java:91)
    at com.AdministratorSystem.actionPerformed(AdministratorSystem.java:145)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6038)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
    at java.awt.Component.processEvent(Component.java:5803)
    at java.awt.Container.processEvent(Container.java:2058)
    at java.awt.Component.dispatchEventImpl(Component.java:4410)
    at java.awt.Container.dispatchEventImpl(Container.java:2116)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    at java.awt.Container.dispatchEventImpl(Container.java:2102)
    at java.awt.Window.dispatchEventImpl(Window.java:2429)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
    java.sql.SQLException: [Oracle][ODBC][Ora]ORA-01000: maximum open cursors exceeded
    at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)
    at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)
    at sun.jdbc.odbc.JdbcOdbc.SQLExecute(JdbcOdbc.java:3149)
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.execute(JdbcOdbcPreparedStatement.java:216)
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.executeQuery(JdbcOdbcPreparedStatement.java:91)
    at com.AdministratorSystem.actionPerformed(AdministratorSystem.java:145)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6038)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
    at java.awt.Component.processEvent(Component.java:5803)
    at java.awt.Container.processEvent(Container.java:2058)
    at java.awt.Component.dispatchEventImpl(Component.java:4410)
    at java.awt.Container.dispatchEventImpl(Container.java:2116)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
    at java.awt.Container.dispatchEventImpl(Container.java:2102)
    at java.awt.Window.dispatchEventImpl(Window.java:2429)
    at java.awt.Component.dispatchEvent(Component.java:4240)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
      

  3.   

    乱七八糟的谁看得清楚啊!你数据库在哪里连的,代码也没有.应该是odbc出了异常.
      

  4.   

    错误如下: 
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.clearParameter(JdbcOdbcPreparedStatement.java:1023) 
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setChar(JdbcOdbcPreparedStatement.java:3057) 
    at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setString(JdbcOdbcPreparedStatement.java:766) 
    ------------
    是连接数据库或读取数据库的问题,找几个关键处,打出测试信息,看看便知
      

  5.   

    这条语句错误:sql = "select student.snumber,sname,ssex,sage,spolity,sthisyear,sedubackgroud,sroot,mname,scategory,maths,english,politics,f_major from student,firsttest where student.snumber =firsttest.snumber and student.snumber=?"; 
      

  6.   

    odbc 错误maximum open cursors exceeded  ,你检查maximum的设置,肯定是他那出现了问题
      

  7.   

    以前写 jdbc 相关的程序一直没有注意到 statement/resultset 是需要关闭的,直到最近在一个系统里面发现了这个 “maximum open cursors exceeded” 的异常。 
    通过查找相关文档,原来一个 statement 通常会对应一个 db cursor ,如果大量使用 statement 而不关闭就会引起此异常,关闭的代码很简单 :
    if(rs!=null)   //ResultSet
        try {
         rs.close();
        } catch (SQLException e1) {
         logger.error(e1.getMessage());
        }   if(pst!=null)  //PreparedStatement  
        try {
         pst.close();
        } catch (SQLException e1) {
         logger.error(e1.getMessage());
        }
      

  8.   

    一般来说是游标不够用了。
    只需在initSID.ora文件中加上一行
    open_cursors = ****
    但是,很可能是由于你的程序或数据库的结构存在着一些潜伏的问题,如jlandzpa所说,没有关闭游标等。我的程序有一阵一直在报这个错误,把OPEN_CURSOR加大到了300甚至1000还在出错,后来发现是表的STORAGE设置有问题。建议你查一下自己的程序。Good Luck!