【发布时间】:2014-07-16 21:02:22
【问题描述】:
我正在尝试增加 SQLite DB (Android) 中的值,但我在 logcat 中收到“没有这样的表”的致命错误,并且应用程序崩溃了。但是,该表存在于数据库中。我的代码可能有问题吗?任何帮助将不胜感激。这是我的更新代码和 logcat 输出。
a) 更新代码
public void tupdateDaysLeft(){
if (daysLeftCur == null) {
daysLeftCur = findDaysLeft();
}
if (daysLeftCur.moveToFirst()) {
int columnIndex = daysLeftCursor.getColumnIndex(MsDbAdapter.COL_DAYSLEFT);
int daysToDel = daysLeftCur.getInt(columnIndex);
// int stt = daysToDel;
// daysle = stt;
mDb.execSQL("UPDATE "+TABLE_PRE+
" SET "+COL_DAYSLEFT+" = "+COL_DAYSLEFT+" - 1"+
" WHERE "+COL_ID+" = ?",
new Object[] { columnIndex });
}
}
b)-i Logcat 输出 1
07-16 23:43:36.938: E/SQLiteLog(20992): (1) no such table: TABLE_PRE
07-16 23:43:36.948: E/AndroidRuntime(20992): FATAL EXCEPTION: main
07-16 23:43:36.948: E/AndroidRuntime(20992): android.database.sqlite.SQLiteException: no such table: TABLE_PRE (code 1): , while compiling: update
TABLE_PRE set COL_DAYSLEFT = COL_DAYSLEFT + 1 where COL_ID = ?
07-16 23:43:36.948: E/AndroidRuntime(20992): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
07-16 23:43:36.948: E/AndroidRuntime(20992): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1013)
07-16 23:43:36.948: E/AndroidRuntime(20992): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:624)
07-16 23:43:36.948: E/AndroidRuntime(20992): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
07-16 23:43:36.948: E/AndroidRuntime(20992): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
b)-ii Logcat 输出 2
01-01 06:31:37.701: E/AndroidRuntime(6357): FATAL EXCEPTION: main
01-01 06:31:37.701: E/AndroidRuntime(6357): java.lang.NullPointerException
01-01 06:31:37.701: E/AndroidRuntime(6357): at com.tembk.mspre.database.MsDbAdapter.tupdateDaysLeft(MsDbAdapter.java:292)
01-01 06:31:37.701: E/AndroidRuntime(6357): at com.tembk.mspre.pre.PreStatus$3.onClick(PreStatus.java:79)
c) 表定义
private static final String TABLE_PRE = "pre";
编辑
d) 表常量/字段
private static final String TABLE_PRE = "pre";
public static final String COL_ID = "_id";
public static final String COL_BEGINDATE = "begindate";
public static final String COL_TERMEND = "termend";
public static final String COL_DAYSLEFT = "daysleft";
public static final String COL_DATE_TIME = "pre_date_time";
e) 表创建 SQL
private static final String PRE_TABLE_CREATE =
"create table " + TABLE_PRE + " ("
+ COL_ID + " integer primary key autoincrement, "
+ COL_BEGINDATE + " text not null, "
+ COL_TERMEND + " text not null, "
+ COL_DAYSLEFT + " integer not null, "
+ COL_DATE_TIME + " text not null " + ")";
【问题讨论】:
-
发布表
pre的创建语句 -
@Apoorv,我已经编辑了代码以包含 FIELD NAMES 和 CREATE 语句。检查“编辑”。
标签: android database sqlite sql-update