java.sql.sql.exception:对空结果集的非法操作

java.sql.sql.exception:对空结果集的非法操作,java,mysql,swing,jdbc,Java,Mysql,Swing,Jdbc,我制作了一个简单的科学测验java应用程序,有4个框架:登录、菜单、测试和结果 前三帧工作正常,但当我单击ShowResult时,它显示一个错误。 这是我从结果框架中得到的代码。如果你想,我可以发送测试帧的编码也 这是我的错误 java.sql.SQLException:对空结果集的非法操作。 位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055) 位于com.mysql.jdbc.SQLError.createSQLEx

我制作了一个简单的科学测验java应用程序,有4个框架:登录、菜单、测试和结果

前三帧工作正常,但当我单击ShowResult时,它显示一个错误。 这是我从结果框架中得到的代码。如果你想,我可以发送测试帧的编码也

这是我的错误

java.sql.SQLException:对空结果集的非法操作。 位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055) 位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) 位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926) 位于com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:815) 位于com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5528) 位于com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5448) 位于com.mysql.jdbc.ResultSetImpl.getFloat(ResultSetImpl.java:2499) 在Test.ResultBTNActionPerformed处(Test.java:292) at Test.access$500(Test.java:18) 在测试$6.actionPerformed时(Test.java:215) 在javax.swing.AbstractButton.fireActionPerformed上(AbstractButton.java:1995) 位于javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) 在javax.swing.DefaultButtonModel.fireActionPerformed上(DefaultButtonModel.java:387) 在javax.swing.DefaultButtonModel.setPressed中(DefaultButtonModel.java:242) 在javax.swing.plaf.basic.BasicButtonListener.mouseRelease(BasicButtonListener.java:236) 位于java.awt.Component.ProcessMouseeEvent(Component.java:6216) 位于javax.swing.JComponent.ProcessMouseeEvent(JComponent.java:3265) 位于java.awt.Component.processEvent(Component.java:5981) 位于java.awt.Container.processEvent(Container.java:2041) 位于java.awt.Component.dispatchEventImpl(Component.java:4583) 位于java.awt.Container.dispatchEventImpl(Container.java:2099) 位于java.awt.Component.dispatchEvent(Component.java:4413) 位于java.awt.LightweightDispatcher.RetargetMouseeEvent(Container.java:4556) 位于java.awt.LightweightDispatcher.ProcessMouseeEvent(Container.java:4220) 位于java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150) 位于java.awt.Container.dispatchEventImpl(Container.java:2085) 位于java.awt.Window.dispatchEventImpl(Window.java:2475) 位于java.awt.Component.dispatchEvent(Component.java:4413) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:599) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 位于java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:184) 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:174) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 在java.awt.EventDispatchThread.run处(EventDispatchThread.java:122)

import java.sql.*;
导入javax.swing.table.*;
导入javax.swing.JOptionPane;
公共类结果扩展了javax.swing.JFrame{
浮动结果;
字符串ID;
/**创建新的表单结果*/
公开结果(){
初始化组件();
}
公共结果(浮点数、字符串id)
{
初始化组件();
结果=res;
ID=ID;
分数。setText(res+“%”);
试一试{
类forName(“java.sql.Driver”);
String database=“jdbc:mysql://localhost:3306/quizdb";
连接conn=DriverManager.getConnection(数据库,“根”,“1234”);
语句stmt=conn.createStatement();
String sql=“select*from Result,其中ID=”+ID+”;
结果集rs=stmt.executeQuery(sql);
Object[]newrow=新对象[5];
新行[0]=“最大分数”;
rs.next();
对于(int i=1;i rs.getFloat(1))
{
sql=“更新结果集”+Subject+“结果=“+res+”其中ID=”“+ID+””;
stmt.executeUpdate(sql);
}
stmt.close();
康涅狄格州关闭();
新结果(res,ID).setVisible(true);
此.setVisible(false);
}
catch(异常e){JOptionPane.showMessageDialog(null,“+e);}
}                                         
私有void aaactionperformed(java.awt.event.ActionEvent evt){
答案[索引-1]=“a”;
}                                 
私有void cActionPerformed(java.awt.event.ActionEvent evt){
答案[索引-1]=“c”;
}                                 
私有void dActionPerformed(java.awt.event.ActionEvent evt){
答案[索引-1]=“d”;
}                                 
/**
*@param指定命令行参数
*/
公共静态void main(字符串参数[]){
invokeLater(new Runnable()){
公开募捐{
新测试().setVisible(真);
}
});
}
更改此代码

rs.next();
for(int i=1; i<=4;i++)
newrow = rs.getString(i+1);
DefaultTableModel tm = (DefaultTableModel)scoreTBL.getModel();
tm.addRow(newrow);
换成

if(rs.next())
max = rs.getInt(1);

如果上述条件为真,则只计算下一个语句。

请避免大声喊叫。如果您需要错误帮助,请显示完整的错误消息,并指出代码中涉及的行。此外,请尝试更好地格式化代码,使其符合Java缩进标准,从而使我们更容易阅读。对不起因此,我是新手,我的编码没有错误,没有红色标记……当应用程序运行时,该人完成了测试,当我们单击应用程序中的“显示结果”时,会显示对话框showig java.sql.sql.exception:空结果集上的非法操作我不是指编码错误,而是指逻辑错误。您的代码它工作不正常,并且出现了一个异常显示--发布该信息并发布导致该信息的行。在catch块中,打印堆栈跟踪vi
rs.next();
for(int i=1; i<=4;i++)
newrow = rs.getString(i+1);
DefaultTableModel tm = (DefaultTableModel)scoreTBL.getModel();
tm.addRow(newrow);
DefaultTableModel tm = (DefaultTableModel)scoreTBL.getModel();
while(rs.next())
{
java.util.Vector row = new java.util.Vector();

for(int i=1; i<=4;i++)
{
row.add(rs.getString(i));
}

tm.addRow(row);
}
rs.next();
max = rs.getInt(1);
if(rs.next())
max = rs.getInt(1);