2015-12-01 43 views
2

我我使用ucanaccess,JRE 1.8和JDK 1.8 但是我直接寫入到數據庫中的數據可以在我的計劃顯示了店面學生信息到微軟accesss數據庫 程序 但數據我在程序輸入不能寫入到數據庫中,它只是凍結的那一刻我將數據保存到數據庫的Java應用程序掛起

這裏是我的連接類

class myConnection{ 
    ResultSet re; 

     String strurl = "jdbc:ucanaccess://student.accdb"; 

    public myConnection(){} 
    public ResultSet getResult(String sql){ 
     try{ 
     Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); 

      Connection conn=DriverManager.getConnection(strurl); 

      Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 
      ResultSet re=stmt.executeQuery(sql); 
      return re; 
     } 
     catch(Exception e){ 
      System.out.println("getResult------"+e.toString()); 
      return null; 
     } 
    } 

    public boolean executeSql(String sql){ 
     try{ 
     Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); 

      Connection conn=DriverManager.getConnection(strurl); 
      Statement stmt=conn.createStatement(); 
      stmt.executeUpdate(sql); 
      conn.commit(); 
      return true; 
     } 
     catch(Exception e){ 
      System.out.println("executeSql----"+e.toString()); 
      return false; 
     } 
    } 
} 
+1

您的代碼有問題,沒有理由打開CONCUR_UPDATABLE結果集,但不使用結果集更新功能,也不在結果集呈現後關閉結果集。你只是明確地在dbms上創建一個鎖。使用Statement stmt = conn.createStatement()(不帶參數),它將起作用。 – jamadei

+0

感謝jamadei,你幫我解決了這個問題,我認爲鎖DBMS是好主意 –

+0

,但現在有一個問題,當我將數據保存到數據庫錯誤 - > net.ucanaccess.jdbc.UcanaccessSQLException:用戶缺少特權或對象未找到: –

回答

1

指定ResultSet.CONCUR_UPDATABLE,未能關閉ResultSet離開鎖表格e(s)參與。由於您實際上並未更新ResultSet,因此您可以簡單地省略該選項(從而使用默認的ResultSet.CONCUR_READONLY)以避免此問題。