SQLiteException: table event has no column named
11.04.2015, 22:41. Показов 8288. Ответов 2
Доброго времени суток. Проблема такова, лог выдаёт ошибку "SQLiteException: table event has no column named". Не могу понять в чём именно проблема.
Функция добавления данных в БД.
| Java | 1
2
3
4
5
6
7
8
9
10
11
12
| // добавить запись в TABLE
public void addRec(String name_table, String name_column, String txt) {
ContentValues cv = new ContentValues();
cv.put(name_column, txt);
mDB.insert(name_table, null, cv);
}
//Перегружение функции(для int)
public void addRec(String name_table, String name_column, int txt) {
ContentValues cv = new ContentValues();
cv.put(name_column, txt);
mDB.insert(name_table, null, cv);
} |
|
И её использование в активити
| Java | 1
2
3
4
5
6
7
8
9
10
11
| Log.v(TAG, "ЗАПИСЬ В ТАБЛИЦУ ---- db.addRec(\"event\", DB.EVENT_COLUMN_MAN, cManID ); ---" );
db.addRec("event", "ManId", cManID );
Log.v(TAG, "ОК" );
Log.v(TAG, "ЗАПИСЬ В ТАБЛИЦУ ---- db.addRec(\"event\", DB.EVENT_COLUMN_MEETING, cMeetID ); ---" );
db.addRec("event", "MeetingId", cMeetID );
Log.v(TAG, "ОК" );
Log.v(TAG, "ЗАПИСЬ В ТАБЛИЦУ ---- db.addRec(\"event\", DB.EVENT_COLUMN_EVENT_TYPE, cETID ); ---" );
db.addRec("event", "EventTypeId", cETID );
Log.v(TAG, "ОК" ); |
|
Сам лог пестрит краснотой выписывая нечто подобное "SQLiteException: table event has no column named MeetingId (code 1): , while compiling: INSERT INTO event(MeetingId) VALUES (?)".
Сам Лог.
| Prolog | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
| 04-11 21:03:00.589 8172-8172/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ ЗАПИСЬ В ТАБЛИЦУ ---- db.addRec("event", DB.EVENT_COLUMN_MAN, cManID ); ---
04-11 21:03:00.609 8172-8172/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ ОК
04-11 21:03:00.609 8172-8172/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ ЗАПИСЬ В ТАБЛИЦУ ---- db.addRec("event", DB.EVENT_COLUMN_MEETING, cMeetID ); ---
04-11 21:03:00.609 8172-8172/com.example.kirukato.coolstdreg E/SQLiteLog﹕ (1) table event has no column named MeetingId
04-11 21:03:00.619 8172-8172/com.example.kirukato.coolstdreg E/SQLiteDatabase﹕ Error inserting MeetingId=1
android.database.sqlite.SQLiteException: table event has no column named MeetingId (code 1): , while compiling: INSERT INTO event(MeetingId) VALUES (?)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1475)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1347)
at com.example.kirukato.coolstdreg.DB.addRec(DB.java:112)
at com.example.kirukato.coolstdreg.EventActivity$1.onClick(EventActivity.java:133)
at android.view.View.performClick(View.java:4421)
at android.view.View$PerformClick.run(View.java:17903)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:5225)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
at dalvik.system.NativeStart.main(Native Method)
04-11 21:03:00.619 8172-8172/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ ОК
04-11 21:03:00.619 8172-8172/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ ЗАПИСЬ В ТАБЛИЦУ ---- db.addRec("event", DB.EVENT_COLUMN_EVENT_TYPE, cETID ); ---
04-11 21:03:00.619 8172-8172/com.example.kirukato.coolstdreg E/SQLiteLog﹕ (1) table event has no column named EventTypeId
04-11 21:03:00.619 8172-8172/com.example.kirukato.coolstdreg E/SQLiteDatabase﹕ Error inserting EventTypeId=1
android.database.sqlite.SQLiteException: table event has no column named EventTypeId (code 1): , while compiling: INSERT INTO event(EventTypeId) VALUES (?)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1475)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1347)
at com.example.kirukato.coolstdreg.DB.addRec(DB.java:112)
at com.example.kirukato.coolstdreg.EventActivity$1.onClick(EventActivity.java:137)
at android.view.View.performClick(View.java:4421)
at android.view.View$PerformClick.run(View.java:17903)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:5225)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
at dalvik.system.NativeStart.main(Native Method)
04-11 21:03:00.619 8172-8172/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ ОК
04-11 21:03:00.619 8172-8172/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ ЗАПИСЬ В ТАБЛИЦУ ЧЕКБОКСИКА ---- ---
04-11 21:03:00.619 8172-8172/com.example.kirukato.coolstdreg E/SQLiteLog﹕ (1) table event has no column named Value
04-11 21:03:00.619 8172-8172/com.example.kirukato.coolstdreg E/SQLiteDatabase﹕ Error inserting Value=0
android.database.sqlite.SQLiteException: table event has no column named Value (code 1): , while compiling: INSERT INTO event(Value) VALUES (?)
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1475)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1347)
at com.example.kirukato.coolstdreg.DB.addRec(DB.java:112)
at com.example.kirukato.coolstdreg.EventActivity$1.onClick(EventActivity.java:149)
at android.view.View.performClick(View.java:4421)
at android.view.View$PerformClick.run(View.java:17903)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:5225)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
at dalvik.system.NativeStart.main(Native Method)
04-11 21:03:00.619 8172-8172/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ ОК---0 |
|
А главное и поразительное для меня то, что первую запись он пропускает или по крайней мере на неё не ругается.
| Prolog | 1
2
3
| 04-11 21:03:00.589 8172-8172/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ ЗАПИСЬ В ТАБЛИЦУ ---- db.addRec("event", DB.EVENT_COLUMN_MAN, cManID ); ---
04-11 21:03:00.609 8172-8172/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ ОК
04-11 21:03:00.609 8172-8172/com.example.kirukato.coolstdreg V/EVENT__ACTIVITY﹕ ЗАПИСЬ В ТАБЛИЦУ ---- db.addRec("event", DB.EVENT_COLUMN_MEETING, cMeetID ); --- |
|
Не могу понять в чём проблема, по этому и обращаюсь в заранее спасибо.
Добавлено через 44 минуты
Добавил вывод на консоль в программу по нажатию кнопки
| Java | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| btnEvent = (Button) findViewById(R.id.log_log_log);
btnEvent.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.d(TAG, "--- Rows in event: ---");
// делаем запрос всех данных из таблицы , получаем Cursor
//Cursor c = db.query("event", null, null, null, null, null, null);
Cursor c = db.getAllData("event");
if (c.moveToFirst()) {
int idColID = c.getColumnIndex(DB.EVENT_COLUMN_ID);
int idColMAN = c.getColumnIndex(DB.EVENT_COLUMN_MAN);
int idColMEETING = c.getColumnIndex(DB.EVENT_COLUMN_MEETING);
int idColET = c.getColumnIndex(DB.EVENT_COLUMN_EVENT_TYPE);
int idColVALUE = c.getColumnIndex(DB.EVENT_COLUMN_VALUE);
do {
// получаем значения по номерам столбцов и пишем все в лог
Log.d(TAG,
"ID = " + c.getInt(idColID) +
", MAN = " + c.getInt(idColMAN) +
", MEETING = " + c.getInt(idColMEETING) +
", EVENT TYPE = " + c.getInt(idColET) +
", VALUE = " + c.getInt(idColVALUE));
// переход на следующую строку
// а если следующей нет (текущая - последняя), то false - выходим из цикла
} while (c.moveToNext());
} else {
Log.d(TAG, "0 rows");
}
}
}); |
|
Вот что пишет лог:
| Prolog | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| 04-11 21:54:30.025 13334-13334/com.example.kirukato.coolstdreg D/EVENT__ACTIVITY﹕ --- Rows in event: ---
04-11 21:54:30.025 13334-13334/com.example.kirukato.coolstdreg E/CursorWindow﹕ Failed to read row 0, column -1 from a CursorWindow which has 168 rows, 2 columns.
04-11 21:54:30.025 13334-13334/com.example.kirukato.coolstdreg D/AndroidRuntime﹕ Shutting down VM
04-11 21:54:30.025 13334-13334/com.example.kirukato.coolstdreg W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x4154d8b0)
04-11 21:54:30.025 13334-13334/com.example.kirukato.coolstdreg E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor is initialized correctly before accessing data from it.
at android.database.CursorWindow.nativeGetLong(Native Method)
at android.database.CursorWindow.getLong(CursorWindow.java:507)
at android.database.CursorWindow.getInt(CursorWindow.java:574)
at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:69)
at com.example.kirukato.coolstdreg.EventActivity$1.onClick(EventActivity.java:92)
at android.view.View.performClick(View.java:4421)
at android.view.View$PerformClick.run(View.java:17903)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:5225)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
at dalvik.system.NativeStart.main(Native Method) |
|
Лог указывает на строчку "EventActivity.java:92", что в свою очередь ", MEETING = " + c.getInt(idColMEETING) +
0
|