トピックは、sqliteで新しいテーブルを作成する際のいくつかの問題があることを暗示しています。私は自分のコードで何をするのですか?私はdb内に新しいテーブルを作成することはできません。私がdbを見れば、単にandroid_metadata tbと他に何もありません。新しいものを作成するためのコードは次のとおりです。DB/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);
}
のコンストラクタでDBを作成します、 ";"またはコマンドの最後に、新しいクリーンなVMを試してみてください。 私のprobを修正する有用な既存の投稿/回答が見つかりませんでした。 私のphpMyAdminで_sql文を実行
CREATE TABLE name_table(_id INT PRIMARY KEY, parentID INT, name TEXT)
(MySQLの)すべてが正常に動作している場合。
私を助けることができれば嬉しいです。
よろしくアレックス
EDIT:(以下のコメントのための答え)
@VikramBodicherla:それはPROBです。 create文自体は例外を発生させませんでした。 34:14.834:E /データベース(305):選択(チェック)ステートメントは
4月30日07を投げないエラー挿入のParentID = -1 名= blabla 4月30日07:34:14.834を:E /データベース(305):android.database.sqlite.SQLiteException:
そのようなテーブル:NAME_TABLE:、コンパイル中:INSERT INTOを NAME_TABLE(のParentID、名)VALUES(?、?)。 04030 07:34:14.834:と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 /データベース(305): android.database.sqlite.SQLiteProgram(SQLiteProgram.java:59 ) 04-30 07:34:14.834:E /データベース(305): とandroid.database.sqlite.SQLのステートメント(SQLiteStatement.java:41) 04-30 07:34:14.834:E /データベース(305 ): android.database.sqlite.SQLiteDatabase.compileStatement(SQLiteDatabase.java:1027) 04-30 07:34:14.834:E /データベース(305): android.database.sqlite.SQLi (SQLiteDatabase.java:1213) 04-30 07:の場合、SQLiteDatabase.java:1286) :34:14.834:E/Database(305): unicorn.Heurazio.Controller.addName(Controller.java:156)04-30 07:34:14.834:E /データベース(305): unicorn.Heurazio .Controller.install(Controller.java:135)04-30 07:34:14.834:E /データベース(305): でunicorn.Heurazio.StartUpActivity.onCreate(StartUpActivity.java:22) 04-30 07: 34:14.834:E /データベース(305): android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 04-30 07:34:14.834:E /データベース(305): android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 04-30 07:34:14.834:E /データベース(305): android.app.ActivityThread。(ActiThread.java:119)04-30 07:34:で、ハンドルランニングアクティビティ(ActivityThread.java:2512) 04-30 07:34:14.834:E /データベース(305) E /データベース(305): android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1863) 04-30 07:34:14.834:E /データベース(305): android.os Handler.dispatchMessage(Handler.java:99)04-30 07:34:14.834:E /データベース(305): android.os.Looper.loop(Looper.java:123)04-30 07:34: (305): android.app.ActivityThread.main(ActivityThread.java:4363)04-30 07:34:14.834:E /データベース(305): java.lang.reflectで、14.834: E /データベース.Method.invokeNative(ネイティブM 03-30 07:34:14.834:E /データベース(305): の場合java.lang.reflect.Method.invoke(Method.java:521)04-30 07:34:14.834: E/Database (305): com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.runZygoteInit.java:860) 04-30 07:34:14.834:E /データベース(305): com.android.internal.os .ZygoteInit.main(ZygoteInit.java:618)4月30日 07:34:14.834:E /データベース(305): dalvik.system.NativeStart.main(ネイティブメソッド)で
これを使ってみましたか?http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html – xandy
logcat stacktraceも投稿できますか?私はあなたが例外を実行していると仮定します。 –
はいそれも試しました。しかし私は私がこのアプローチをスキップするように私は1つを必要としなかったと思う。私が間違っているなら私を修正してください。SQLiteOpenHelperはアップグレード用です。 – Alex