2016-04-25 16 views
0

爲什麼光標不能登錄findFirstRow當我嘗試使用Jackcess找到需要刪除的行以刪除表時?無法使用getSystemTable通過Jackcess刪除表並使用findFirstRow

private static void deleteTable(Database db, String tableName) throws IOException { 
    Table table = db.getSystemTable(tableName); 
    if (table == null) { 
     return; 
    } 
    Cursor cursor = table.getDefaultCursor(); 
    Map<String, Object> criteria = new HashMap<String, Object>(); 
    criteria.put("Name", tableName); 
    criteria.put("Type", (short) 1); 
    if (cursor.findFirstRow(criteria)) { 
     table.deleteRow(cursor.getCurrentRow()); 
     Log.e(TAG, "delete " + tableName + " success!"); 
    } else { 
     Log.e(TAG, "can't find this Table");//run here 
    } 
    db.flush(); 
    db.close(); 
} 

P.S:沒有報告異常

+0

一個標題應簡潔地描述問題;使用問題的主體來更詳細地解釋問題。如果這意味着重複正文中的標題,則重複標題。只有身體代碼的問題通常質量較差。 –

回答

0

你的錯誤是要打開你想要刪除的表,而不是保存數據庫對象的列表中的系統表。取而代之的

Table table = db.getSystemTable(tableName); 

你需要使用

Table table = db.getSystemTable("MSysObjects"); 
+0

感謝您的回答。 – jelen