如果我跑:
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
我应该传递一个表名,就好像不是一个String?
答案 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";
// ...
}
因此您可以以静态方式访问它:
deleteTableRecords(DbHelper.TABLE_ALBUMS);
答案 1 :(得分:1)
在方法中传递变量而不是String。
假设你有
class DbHelper{
public static final String TABLE_ALBUMS = "albums";
}
使用:
deleteTableRecords(DbHelper.TABLE_ALBUMS);