这个Exception意味着什么?java.sql.SQLException:一般错误,在Java中使用Access DB?

时间:2011-12-14 17:46:44

标签: java ms-access

我正在尝试将数据插入存储在计算机上的Access数据库中, 但是当我运行以下代码时,会出现例外

这是一个例外:

  

Dec 14,2011 7:22:21 PM Ass3_lab.afterLogin $ 8 actionPerformed       严重:空       java.sql.SQLException:一般错误           at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6986)           at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)           at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3110)           at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)           at 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);
        }
    }
});

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

GeneralError非常具有误导性。它可能发生的原因有多种:

  1. 用户名,密码不正确。
  2. Java和ODBC驱动程序的位数差异(检查java和你的odbc驱动程序是32还是64)
  3. 非常讨厌,但重新创建DSN的工作原理(不知道为什么,但有时它确实如此)。