2016-07-04 60 views
1

如果我運行:傳遞一個SQLiteDatabase刪除功能的表名作爲字符串中的Android

void deleteTableRecords() { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     db.delete(TABLE_ALBUMS,null,null); 
     db.close(); 
    } 

我得到我想要的結果。但是,如果我運行:

void deleteTableRecords(String tableName) { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     db.delete(tableName,null,null); 
     db.close(); 
    } 

deleteTableRecords("TABLE_ALBUMS")呼叫我得到一個崩潰,並告知:

android.database.sqlite.SQLiteException: no such table: TABLE_ALBUMS 

我應該怎麼路過一個表名作爲如果沒有一個字符串?

+0

你嘗試過這種 「deleteTableRecords(TABLE_ALBUMS)」? – pooyan

+0

是否要刪除表格或表格中的行? –

回答

3

TABLE_ALBUMS是您的變量的名稱。它的價值很可能是別的。

我猜你分配一個值TABLE_ALBUMS,例如:

private static final String TABLE_ALBUMS = "someValue"; 

在這種情況下,你需要傳遞的實際值,而不是變量的名稱:

deleteTableRecords("someValue"); 

更好方法是使其成爲一個公共常數:

public class DbHelper { 
    public static final String TABLE_ALBUMS = "someValue"; 

    // ... 

} 

所以你可以訪問它我n靜態方式:

deleteTableRecords(DbHelper.TABLE_ALBUMS); 
+0

完美,謝謝。你的解釋提醒我,我確實在其他地方分配了一個值,但對於最近的代碼已經習慣於引用'TABLE_ALBUMS',這個想法完全讓我失去了主意。 – biscuitstack

1

在方法中傳遞變量不是String。

假設你有

class DbHelper{ 
    public static final String TABLE_ALBUMS = "albums"; 
} 

用途:

deleteTableRecords(DbHelper.TABLE_ALBUMS); 
相關問題