Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDBC ResultSet.getString在ResultSet异常开始/结束之前/之后_Java_Mysql_Exception_Jdbc - Fatal编程技术网

Java JDBC ResultSet.getString在ResultSet异常开始/结束之前/之后

Java JDBC ResultSet.getString在ResultSet异常开始/结束之前/之后,java,mysql,exception,jdbc,Java,Mysql,Exception,Jdbc,我已经通过Google搜索了很多关于这个主题的内容,但是我还没有找到像我使用getString()那样使用getString()的人,所以我无法按照建议的正常方式解决这个问题 我试图做的是从数据库中获取所有信息,然后使用它在程序中填充一个表模型。我通过使用getString获取数据并将其放入String[]对象来实现。以下是我的MySQLConnection类: import java.sql.Connection; import java.sql.DriverManager; import j

我已经通过Google搜索了很多关于这个主题的内容,但是我还没有找到像我使用getString()那样使用getString()的人,所以我无法按照建议的正常方式解决这个问题

我试图做的是从数据库中获取所有信息,然后使用它在程序中填充一个表模型。我通过使用getString获取数据并将其放入String[]对象来实现。以下是我的MySQLConnection类:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

public class MySQLConnect
{
    public MySQLConnect()
    {
        connect = null;
        statement = null;
        rSet = null;    
    }

    public void Connect(String dbase, String uname, String pword)
    {
        try
        {
            Class.forName("com.mysql.jdbc.Driver");

            connect = DriverManager.getConnection("jdbc:mysql://localhost/" + dbase , uname, pword);
            JOptionPane.showMessageDialog(null, "Connection successful.  Please retry your submission." , "Information", JOptionPane.INFORMATION_MESSAGE);          
        }

        catch (Exception e)
        {
            JOptionPane.showMessageDialog(null, e , "SQL Error", JOptionPane.ERROR_MESSAGE);
        }       
    }

    public void addDonor(int did, String dname, String dcname, int damount, DefaultTableModel model)
    {
        try
        {
            statement = connect.createStatement();

            statement.execute("Insert Into prg421_w5.donors Values ("+ did + ",'" + dname + "','" + dcname + "'," + damount + ")");
            JOptionPane.showMessageDialog(null, "Data entry added successfully." , "Information", JOptionPane.INFORMATION_MESSAGE);
            getRSet();
            updateTable(model);
        }

        catch (Exception e)
        {
            JOptionPane.showMessageDialog(null, e , "SQL Error", JOptionPane.ERROR_MESSAGE);
        }
    }

    public void getRSet()
    {
        try 
        {
            rSet = statement.executeQuery("Select * From donors");
        }

        catch (Exception e)
        {

        }
    }

    public void updateTable (DefaultTableModel model)
    {
        try
        {
            for (i = getRowCount(); i > 0; i--)
            {
                model.removeRow(0);
            }
        }

        catch (Exception e)
        {
            JOptionPane.showMessageDialog(null, e , "SQL Error", JOptionPane.ERROR_MESSAGE);
        }

        try
        {
            while (rSet.next())
            {
                String row[] = {rSet.getString("DonorName"),rSet.getString("DonorCharity"),((String)rSet.getString("DonationAmount"))};

                model.addRow(row);      
            }
        }

        catch (Exception e)
        {
            JOptionPane.showMessageDialog(null, e , "SQL Error", JOptionPane.ERROR_MESSAGE);
        }       
    }

    public int getRowCount()
    {
        try
        {
            rowCount = rSet.getInt(1);
        }

        catch (Exception e)
        {
            JOptionPane.showMessageDialog(null, e , "SQL Error", JOptionPane.ERROR_MESSAGE);
        }

        return rowCount;
    }   

    public Boolean isConnected()
    {
        return connect != null;
    }

    public void Close()
    {
        try
        {
          if (rSet != null)
          {
              rSet.close();
          }

          if (statement != null)
          {
              statement.close();
          }

          if (connect != null)
          {
              connect.close();
          }
        }

        catch (Exception e)
        {
            JOptionPane.showMessageDialog(null, e , "SQL Error", JOptionPane.ERROR_MESSAGE);
        }
    }


    private Connection connect;
    private Statement statement;
    private ResultSet rSet;
    private int rowCount, i;

    private static Object o = null;
}
但是,我总是收到一条对话框错误消息,在标题中说明这些错误消息:

异常:在结果集开始之前

异常:在结果集结束后

以下是堆栈跟踪:

java.sql.SQLException:在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)位于 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)位于 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)位于 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)位于 com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:854)位于 com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2709)位于 MySQLConnect.getRowCount(MySQLConnect.java:100)位于 MySQLConnect.updateTable(MySQLConnect.java:68)位于 add捐赠者(MySQLConnect.java:42)位于 addconsor(Operations.java:135)位于 GUI$EventHandler.actionPerformed(GUI.java:145)位于 javax.swing.AbstractButton.fireActionPerformed(未知源代码)位于 javax.swing.AbstractButton$Handler.actionPerformed(未知源代码)位于 javax.swing.DefaultButtonModel.fireActionPerformed(未知源代码)位于 javax.swing.DefaultButtonModel.setPressed(未知源代码)位于 javax.swing.plaf.basic.BasicButtoListener.mouseReleased(未知 位于java.awt.Component.ProcessMouseeEvent(未知源代码)的 javax.swing.JComponent.ProcessMouseeEvent(未知源代码)位于 位于的java.awt.Component.processEvent(未知源) 位于的java.awt.Container.processEvent(未知源) 位于的java.awt.Component.dispatchEventImpl(未知源) 位于的java.awt.Container.dispatchEventImpl(未知源) 位于的java.awt.Component.dispatchEvent(未知源) 位于的java.awt.LightweightDispatcher.RetargetMouseeEvent(未知源) 位于的java.awt.LightweightDispatcher.ProcessMouseeEvent(未知源) 位于的java.awt.LightweightDispatcher.dispatchEvent(未知源) 位于的java.awt.Container.dispatchEventImpl(未知源) 位于的java.awt.Window.dispatchEventImpl(未知源) 位于的java.awt.Component.dispatchEvent(未知源) 位于的java.awt.EventQueue.dispatchEventImpl(未知源) java.awt.EventQueue.access$200(未知源代码)位于 java.awt.EventQueue$3.run(未知源代码)位于 java.awt.EventQueue$3.run(未知源代码)位于 java.security.AccessController.doPrivileged(本机方法)位于 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 来源)在 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 源代码)位于java.awt.EventQueue$4。运行(未知源代码)位于 java.awt.EventQueue$4.run(未知源代码)位于 java.security.AccessController.doPrivileged(本机方法)位于 java.security.ProtectionDomain$1.doIntersectionPrivilege(未知 源代码)位于java.awt.EventQueue.dispatchEvent(未知源代码)位于 java.awt.EventDispatchThread.pumpOneEventForFilters(未知源) 位于java.awt.EventDispatchThread.pumpEventsForFilter(未知源) 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(未知 源代码)位于java.awt.EventDispatchThread.pumpEvents(未知源代码) 位于java.awt.EventDispatchThread.pumpEvents(未知源) java.awt.EventDispatchThread.run(未知源)

java.sql.SQLException:在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)位于 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)位于 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)位于 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)位于 com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:854)位于 com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2709)位于 MySQLConnect.getRowCount(MySQLConnect.java:100)位于 MySQLConnect.updateTable(MySQLConnect.java:68)位于 Operations.updateTable(Operations.java:164)位于 GUI$EventHandler.actionPerformed(GUI.java:148)位于 javax.swing.AbstractButton.fireActionPerformed(未知源代码)位于 javax.swing.AbstractButton$Handler.actionPerformed(未知源代码)位于 javax.swing.DefaultButtonModel.fireActionPerformed(未知源代码)位于 javax.swing.DefaultButtonModel.setPressed(未知源代码)位于 javax.swing.plaf.basic.BasicButtoListener.mouseReleased(未知 位于java.awt.Component.ProcessMouseeEvent(未知源代码)的 javax.swing.JComponent.ProcessMouseeEvent(未知源代码)位于 位于的java.awt.Component.processEvent(未知源) 位于的java.awt.Container.processEvent(未知源) 位于的java.awt.Component.dispatchEventImpl(未知源) 位于的java.awt.Container.dispatchEventImpl(未知源) 位于的java.awt.Component.dispatchEvent(未知源) 位于的java.awt.LightweightDispatcher.RetargetMouseeEvent(未知源) 位于的java.awt.LightweightDispatcher.ProcessMouseeEvent(未知源) 位于的java.awt.LightweightDispatcher.dispatchEvent(未知源) 位于的java.awt.Container.dispatchEventImpl(未知源) 位于的java.awt.Window.dispatchEventImpl(未知源) 位于的java.awt.Component.dispatchEvent(未知源) 位于的java.awt.EventQueue.dispatchEventImpl(未知源) java.awt.EventQueue.access$200(未知源代码)位于 java.awt.EventQueue$3.run(未知源代码)位于 java.awt.EventQueue$3.run(未知源代码)位于 java.security.AccessController.doPrivileged(本机方法)位于
 rSet.next();
 String foundType = rSet.getString(1);
if(rSet.next()){
   foundType = result.getString(1);
}
ResultSet rs = getRSet();
if(rs != null) {
    while(rs.next()) {
        String rows[] = { rs.getString(1), rs.getString(2), rs.getString(3) };
        model.add(rows);
    }
} //else, error handling