我做了一个小的信息系统。其中一个删除界面有按钮:上一条,下一条,删除当前记录。当我删除完一条记录的时候再点上一条或者下一条的时候就会报错。错误如下。[Microsoft][ODBC Microsoft Access Driver]行中有错误
at sun.jdbc.odbc.JdbcOdbcResultSet.setPos(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.updateRow(Unknown Source)
at com.SCYG$3.actionPerformed(SCYG.java:164)
at 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 Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
上一条的代码:
final JButton button_2 = new JButton();
button_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
try {
rs.updateRow();
if(rs.previous()&&!rs.isBeforeFirst())
{
sfz.setText(rs.getString(1));
name.setText(rs.getString(2));
age.setText(rs.getString(3));
address.setText(rs.getString(4));
other.setText(rs.getString(5));
}
else
{
System.out.println("已经到了最开始处");
rs.next();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
button_2.setText("上一条");
button_2.setBounds(43, 199, 99, 23);
getContentPane().add(button_2);删除的代码:
final JButton button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
rs.previous();
if(rs.next());
String sql2="delete from YG where YGid="+rs.getString(1);
System.out.println(sql2);
db.executeUpdate(sql2);
} catch (SQLException e1) {
e1.printStackTrace();
} }
});
button.setText("删除");
button.setBounds(313, 199, 60, 23);
getContentPane().add(button);数据库连接的类DBCon的代码:
package com;import java.sql.*;import javax.swing.JOptionPane;public class DBCon
{
private Connection cnn=null;
private Statement stmt=null;
private ResultSet rst=null;
//获得Connection
public Connection getcon()
{
try
{
// JOptionPane.showMessageDialog(null, abc);
String strurl="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=db1.mdb";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection(strurl);
if(conn!=null)
{
System.out.println("连接成功!");
return conn;
}
else
{
System.out.println("连接失败!");
return null;
}
/* Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from test");
if(rs.next())
{
//System.out.println(rs.getString("name"));
}*/
}catch(Exception e)
{
System.out.println("出现异常!!");
return null;
}
}
// 更新操作
public int executeUpdate(String sql){
int result=0;
try{
cnn=this.getcon();
stmt=cnn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
result=stmt.executeUpdate(sql);
cnn.commit();
}catch(Exception ex){
ex.printStackTrace();
}
return result;
}
//表是否已经存在
public boolean hasTable(String name){
boolean flag=false;
cnn=this.getcon();
try {
DatabaseMetaData dm=cnn.getMetaData();
rst=dm.getTables(null, null, name, null);
while(rst.next()){
flag=true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}
//查询语句
public ResultSet executeQuery(String sql){
cnn=this.getcon();
try {
stmt=cnn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rst=stmt.executeQuery(sql);
cnn.commit();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rst;
}
public void close() {
try {
if (rst != null) {
rst.close();
}
}
catch (Exception e) {
e.printStackTrace(System.err);
}
try {
if (stmt != null) {
stmt.close();
}
}
catch (Exception e) {
e.printStackTrace(System.err);
}
try {
if (cnn != null) {
cnn.close();
}
}
catch (Exception e) {
e.printStackTrace(System.err);
}
}
//
// public static void main(String[] args)
// {
// DBCon db=new DBCon();
// db.getcon();
// }
}
at sun.jdbc.odbc.JdbcOdbcResultSet.setPos(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.updateRow(Unknown Source)
at com.SCYG$3.actionPerformed(SCYG.java:164)
at 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 Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
上一条的代码:
final JButton button_2 = new JButton();
button_2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
try {
rs.updateRow();
if(rs.previous()&&!rs.isBeforeFirst())
{
sfz.setText(rs.getString(1));
name.setText(rs.getString(2));
age.setText(rs.getString(3));
address.setText(rs.getString(4));
other.setText(rs.getString(5));
}
else
{
System.out.println("已经到了最开始处");
rs.next();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
button_2.setText("上一条");
button_2.setBounds(43, 199, 99, 23);
getContentPane().add(button_2);删除的代码:
final JButton button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
rs.previous();
if(rs.next());
String sql2="delete from YG where YGid="+rs.getString(1);
System.out.println(sql2);
db.executeUpdate(sql2);
} catch (SQLException e1) {
e1.printStackTrace();
} }
});
button.setText("删除");
button.setBounds(313, 199, 60, 23);
getContentPane().add(button);数据库连接的类DBCon的代码:
package com;import java.sql.*;import javax.swing.JOptionPane;public class DBCon
{
private Connection cnn=null;
private Statement stmt=null;
private ResultSet rst=null;
//获得Connection
public Connection getcon()
{
try
{
// JOptionPane.showMessageDialog(null, abc);
String strurl="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=db1.mdb";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection(strurl);
if(conn!=null)
{
System.out.println("连接成功!");
return conn;
}
else
{
System.out.println("连接失败!");
return null;
}
/* Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from test");
if(rs.next())
{
//System.out.println(rs.getString("name"));
}*/
}catch(Exception e)
{
System.out.println("出现异常!!");
return null;
}
}
// 更新操作
public int executeUpdate(String sql){
int result=0;
try{
cnn=this.getcon();
stmt=cnn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
result=stmt.executeUpdate(sql);
cnn.commit();
}catch(Exception ex){
ex.printStackTrace();
}
return result;
}
//表是否已经存在
public boolean hasTable(String name){
boolean flag=false;
cnn=this.getcon();
try {
DatabaseMetaData dm=cnn.getMetaData();
rst=dm.getTables(null, null, name, null);
while(rst.next()){
flag=true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag;
}
//查询语句
public ResultSet executeQuery(String sql){
cnn=this.getcon();
try {
stmt=cnn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rst=stmt.executeQuery(sql);
cnn.commit();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rst;
}
public void close() {
try {
if (rst != null) {
rst.close();
}
}
catch (Exception e) {
e.printStackTrace(System.err);
}
try {
if (stmt != null) {
stmt.close();
}
}
catch (Exception e) {
e.printStackTrace(System.err);
}
try {
if (cnn != null) {
cnn.close();
}
}
catch (Exception e) {
e.printStackTrace(System.err);
}
}
//
// public static void main(String[] args)
// {
// DBCon db=new DBCon();
// db.getcon();
// }
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货