2011-12-14 91 views
0

我试图将数据插入到存储在我的电脑, 对Access数据库,但是当我运行此以下代码的异常出现这个异常是什么意思?? java.sql.SQLException:一般错误,在Java中用Access DB?

这是例外:

2011年12月14日7: 22:21 PM Ass3_lab.afterLogin $ 8的actionPerformed 重度:空 值java.sql.SQLException:常规错误 在sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6986) 在sun.jdbc.odbc.JdbcOdbc。 standardError(JdbcOdbc.java:7114) at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java: 3110) 在sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338) 在sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:288)

我写了这个方法,使插入:

public void saveDataInDB(int std_id,int course_id,String semester_no) throws SQLException { 
    Connection conn=null; 
    PreparedStatement pstmt=null; 

    String insertSQL="insert into Registered_course (std_id,course_id,semester_number) values(? , ?,?)"; 
    try{ 
     conn=con.getConnection(); 
     pstmt=conn.prepareStatement(insertSQL); 

     pstmt.setInt(1,std_id); 
     pstmt.setInt(2,course_id); 
     pstmt.setString(3,semester_no); 
     pstmt.executeUpdate(); 

     pstmt.close(); 
     conn.close(); 
    } // end of try 
    finally { 
     if(conn != null){ 
      conn.close(); 
     } 
     if (pstmt != null) { 
      try { 
       pstmt.close(); 
      } catch (Exception ignore) { 
      } 
     } 
    } 
} 

我打电话的动作监听器内部这样的方法:

save.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent e){ 
     try { 
      Login l = new Login(); 

      for(int t=0;t<=numberOfRowsInTableOne;t++){ 
       i.saveDataInDB(l.idFromDB,course_id[t],semester_no); 
      } 
     } catch (SQLException ex) { 
      Logger.getLogger(afterLogin.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 
}); 

有人能帮助我解决这个问题吗?

+0

假设它的功课我相应地标记了它...... – mprabhat 2011-12-14 17:50:34

+0

您正在关闭连接和语句两次,请尝试从“尝试”中删除并查看。也看到[这个问题](http://stackoverflow.com/q/4584951/922954) - 你可能也需要提交连接。 – aishwarya 2011-12-14 18:00:47

回答

2

GeneralError相当具有误导性。有多种原因可以发生:

  1. 不正确的用户名,密码。
  2. Java和ODBC驱动程序的位数差异(检查Java和您的odbc驱动程序是否都是32或64)
  3. 非常烦人,但重新创建DSN的作品(不知道为什么,但有时它确实如此)。