Как тема подразумевает, что у меня есть несколько проблем с созданием новой таблицы в sqlite. что я делаю с моим кодом, я не могу создать новую таблицу в db. если я смотрю на db, есть только android_metadata tb и ничего больше. код для создания нового является:не может создать таблицу SQLite/Android
...
this.createTable(R.string.nametable, "_id INT PRIMARY KEY, " + "parentID INT, " + "name TEXT");
...
public void createTable(int id, String sql) {
String table = this.getStringById(id);
String _sql = "CREATE TABLE " + table + "(" + sql + ")";
Log.d("Controller.createTable", _sql);
this.mCurrentConnection.rawQuery(_sql, null);
try {
Cursor c = this.Select(id, "*", null);
c.close();
Log.d("Controller.createTable", "create finished");
} catch (Exception e) {
Log.d("Controller.createTable", "can't create table: " + table);
}
}
я открыть или создать БД в застройщик моего приложения
if(this.mCurrentConnection == null || !this.mCurrentConnection.isOpen()) {
this.mCurrentConnection = this.mContext.openOrCreateDatabase(this.mDB, Context.MODE_PRIVATE , null);
}
Я пробовал все: изменение названия дб/ТБ, переустановите приложение , размещение ";" или нет в конце команды, попробовал его с новым чистым vm. Я не нашел полезного существующего сообщения/ответа, которые исправить мою проблему. если я выполнить оператор _sql
CREATE TABLE name_table(_id INT PRIMARY KEY, parentID INT, name TEXT)
в PHPMyAdmin (MySQL) все работает отлично.
Я буду рад, если вы поможете мне.
С уважением Алекс
EDIT: (ответ на комментарии ниже)
@VikramBodicherla: это Проб. сама постановка-постановщик не вызвала никакого изъятия. Выбрать (чек) оператор делает бросить
04-30 07: 34: 14,834: E/базы данных (305): Ошибка вставки ParentId = -1 имя = BlaBla 04-30 07: 34: 14,834 : Е/базы данных (305): android.database.sqlite.SQLiteException:
нет такой таблицы: name_table:, во время компиляции: INSERT INTO name_table (ParentId, имя) ЗНАЧЕНИЯ (?,?); 04-30 07: 34: 14.834: E/Database (305): at android.database.sqlite.SQLiteProgram.native_compile (родной метод) 04-30 07: 34: 14.834: E/Database (305): at android.database.sqlite.SQLiteProgram.compile (SQLiteProgram.java:110) 04-30 07: 34: 14.834: E/Database (305): at android.database.sqlite.SQLiteProgram. (SQLiteProgram.java:59) 04-30 07: 34: 14.834: E/Database (305): at android.database.sqlite.SQLiteStatement. (SQLiteStatement.java:41) 04-30 07: 34: 14.834: E/Database (305)): at android.database.sqlite.SQLiteDatabase.compileStatement (SQLiteDatabase.java:1027) 04-30 07: 34: 14.834: E/Database (305): at android.database.sqlite.SQLi teDatabase.insertWithOnConflict (SQLiteDatabase.java:1413) 04-30 07: 34: 14.834: E/Database (305): at android.database.sqlite.SQLiteDatabase.insert (SQLiteDatabase.java:1286) 04-30 07 : 34: 14.834: E/Database (305): at unicorn.Heurazio.Controller.addName (Controller.java:156) 04-30 07: 34: 14.834: E/Database (305): at unicorn.Heurazio .Controller.install (Controller.java:135) 04-30 07: 34: 14.834: E/Database (305): at unicorn.Heurazio.StartUpActivity.onCreate (StartUpActivity.java:22) 04-30 07: 34: 14.834: E/Database (305): at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047) 04-30 07: 34: 14.834: E/Database (305): at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2459) 04-30 07: 34: 14.834: E/Database (305): at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2512) 04-30 07: 34: 14.834: E/Database (305): at android.app.ActivityThread.access $ 2200 (ActivityThread.java:119) 04-30 07:34: 14.834: E/Database (305): at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1863) 04-30 07: 34: 14.834: E/Database (305): at android.os. Handler.dispatchMessage (Handler.java:99) 04-30 07: 34: 14.834: E/Database (305): at android.os.Looper.loop (Looper.java:123) 04-30 07:34: 14.834: E/Database (305): at android.app.ActivityThread.main (ActivityThread.java:4363) 04-30 07: 34: 14.834: E/Database (305): at java.lang.reflect .Method.invokeNative (Native M этад) 04-30 07: 34: 14.834: E/Database (305): at java.lang.reflect.Method.invoke (Method.java:521) 04-30 07: 34: 14.834: E/Database (305): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.runZygoteInit.java: 860) 04-30 07: 34: 14.834: E/Database (305): at com.android.internal.os .ZygoteInit.main (ZygoteInit.java:618) 04-30 07: 34: 14,834: E/База данных (305): в dalvik.system.NativeStart.main (Native Method)
Вы пробовали использовать это: http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html – xandy
Можете ли вы также опубликовать logcat stacktrace, пожалуйста? Я предполагаю, что вы работаете с исключением. –
да пробовал тоже. но я думаю, что мне не нужен, поэтому я пропустил этот подход. исправьте меня, если я ошибаюсь. afaik SQLiteOpenHelper - это для Upgrades. – Alex