-2

書籍テーブルに新しい列を追加したいのですが、エラーが表示されます:-私は何か間違ったことをしていますか?

原因: android.database.sqlite.SQLiteException: テーブル ブックは既に存在します

上記のエラー

@Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL( "CREATE TABLE books (id INTEGER PRIMARY KEY AUTOINCREMENT,title TEXT ,author TEXT,isbn TEXT,city TEXT );");


            Log.v("onCreate-------","called onCreate"); 

        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            android.util.Log.w("books",
            "Upgrading database, which will destroy all old data");
            //db.execSQL("DROP TABLE IF EXISTS books");
            db.execSQL("ALTER TABLE books ADD COLUMN city2 TEXT");

            onCreate(db);
            Log.v("onUpgrade-------","called onUpgrade with alter"); 
        }
4

3 に答える 3

2
onCreate(db);
Log.v( "onUpgrade -------"、 "onUpgrade with alter");

ここで再度onCreateを呼び出す必要はありません。それが問題です。

于 2013-01-28T05:58:31.927 に答える
0

作成クエリを-に変更します

CREATE TABLE IF NOT EXISTS books....
于 2013-01-28T06:00:37.603 に答える
0

以下を使用して、データベースがすでに存在するかどうかを確認しますか?
フォローしている可能性があります。

public static final String DB_PATH = "/data/data/com.test.appname/databases/";
public static final String DB_NAME = "databasename.db";
public boolean checkDBExists()
{
    try 
    {
        File file = new File(DB_PATH+DB_NAME);
        if(file.exists())
        {
          // do nothing
        }
        else
        {
         db.execSQL( "CREATE TABLE books (id INTEGER PRIMARY KEY AUTOINCREMENT,title TEXT ,author TEXT,isbn TEXT,city TEXT );");
        }
   }
   catch (Exception e) 
   {
     e.printStackTrace();
     return false;
   }
}
于 2013-01-28T06:18:36.490 に答える