我已经通过Google对这个主题进行了大量的搜索,但是我还没有找到使用getString()的方式,所以我使用它无法以建议的正常方式解决此问题。JDBC ResultSet.getString ResultSet的开始/结束之前/之后异常
我想要做的是从数据库中获取所有信息,然后使用它在程序中填充表模型。我通过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.SQLE xception:在开始结果集之前 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)at 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)在 MySQLConnect.addDonor(MySQLConnect.java:42 )at Operations.addDonor(Operations.java:135)at GUI $ EventHandler.ac tionPerformed(GUI.java:145)在 javax.swing.AbstractButton.fireActionPerformed(来源不明)在 javax.swing.AbstractButton中的$ Handler.actionPerformed(来源不明)在 javax.swing.DefaultButtonModel.fireActionPerformed(来源不明)在 javax.swing.DefaultButtonModel.setPressed(未知来源)处 javax.swing.JComponent中 javax.swing.plaf.basic.BasicButtonListener.mouseReleased(未知 源)在java.awt.Component.processMouseEvent(未知来源)。 processMouseEvent(Unknown Source)at java.awt.Component.processEvent(Unknown Source)at java.awt.Container.processEvent(Unknown Source)at java.awt.Component.dispatchEventImpl(Unknown Source)at java.awt.Container.dispatchEventImpl(Unknown Source)at java.awt.Component.dispatchEvent(Unknown Source)at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source )在 java.awt.LightweightDispatcher.dispatchEvent(未知来源)处 java.awt.Window.dispatchEventImpl(未知来源) java.awt.Container.dispatchEventImpl(未知来源)在 java.awt.Component.dispatchEvent( (Unknown Source)at java.awt.EventQueue.dispatchEventImpl(Unknown Source)at java.awt.EventQueue.access $ 200(Unknown Source)at java.awt.EventQueue $ 3.run(Unknown Source)at java.awt。 EventQueue的$ 3.run(Unknown Source) java.security.AccessController.doPrivileged(Native Method) java.security.ProtectionDomain $ 1。doIntersectionPrivilege(未知 来源)在 java.security.ProtectionDomain $ 1.doIntersectionPrivilege(未知 来源)在java.awt.EventQueue中$ 4.run(来源不明)在 java.awt.EventQueue中的$ 4.run(来源不明)在 java.security.AccessController.doPrivileged(Native Method)at java.acurity.ProtectionDomain $ 1.doIntersectionPrivilege(Unknown Source)at java.awt.EventQueue.dispatchEvent(Unknown Source)at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source ) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)at java.awt.EventDispatchThread.pumpEv已废除(未知来源) 处 java.awt.EventDispatchThread.run(未知来源)
java.sql.SQLException中java.awt.EventDispatchThread.pumpEvents(未知来源):结果的端设定在 COM后。 mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)at 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)at MySQLConnec t.getRowCount在 Operations.updateTable(Operations.java:164)(MySQLConnect.java:100)在 MySQLConnect.updateTable(MySQLConnect.java:68)在 GUI $ EventHandler.actionPerformed(GUI.java:148)在 javax.swing.AbstractButton.fireActionPerformed(Unknown Source)at javax.swing.AbstractButton $ Handler.actionPerformed(Unknown Source)at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)at javax.swing.DefaultButtonModel.setPressed(Unknown源)在 javax.swing.plaf.basic.BasicButtonListener.mouseReleased(未知 源)在java.awt.Component.processMouseEvent(未知源)在 javax.swing.JComponent.processMouseEvent(未知源)在 java.awt.Component.processEvent(Unknown Source)at java.awt.Container.processEvent(Unknown Source)at java.awt.Component.dispatchEventImpl(Unknown Source)at java.awt.Container.dispatchEventImpl(Unknown Source)在 java.awt.Component.dispatchEvent(未知来源)在处 java.awt.LightweightDispatcher.dispatchEvent java.awt.LightweightDispatcher.processMouseEvent(未知来源) java.awt.LightweightDispatcher.retargetMouseEvent(未知源)(未知源)在 java.awt.Container.dispatchEventImpl(未知源)在 java.awt.Window.dispatchEventImpl(未知源)在 java.awt.Component.dispatchEvent(未知源)在 java.awt.EventQueu e.dispatchEventImpl(Unknown Source)at java.awt.EventQueue.access $ 200(Unknown Source)at java.awt.EventQueue $ 3.run(Unknown Source)at java.awt.EventQueue $ 3.run(Unknown Source)at java.security.AccessController.doPrivileged(本机方法)在 java.security.ProtectionDomain $ 1.doIntersectionPrivilege(未知 来源)在 java.security.ProtectionDomain $ 1.doIntersectionPrivilege(未知 来源)在java.awt.EventQueue中$ 4运行(Unknown Source) java.awt.EventQueue $ 4.run(Unknown Source)at java.security.AccessController.doPrivileged(Native Method)at java.security.ProtectionDomain $ 1。doIntersectionPrivilege(未知 源)在java.awt.EventQueue.dispatchEvent(未知来源)在 java.awt.EventDispatchThread.pumpOneEventForFilters(未知来源) 在java.awt.EventDispatchThread.pumpEventsForFilter(未知来源) 在java.awt中。 EventDispatchThread.pumpEventsForHierarchy(未知 来源)在java.awt.EventDispatchThread.pumpEvents(来源不明) 在java.awt.EventDispatchThread.pumpEvents(来源不明)在 java.awt.EventDispatchThread.run(来源不明)
错误实际上是从rSet.getInt(1)生成的;在我的getRowCount()方法中。
数据仍然被添加,一切正常,但它只是讨厌不得不关闭这些消息窗口。有没有人有一些建议?
你能请张贴更多的代码和堆栈跟踪查看代码的行为,并解释你/警告你面对什么样的错误? –
为您的班级编写完整的代码。 –
@BhavikAmbani完成。 – Geowil