4

プログラムでlogcatにエラーが表示されないようにテーブルを削除しようとしましたが、結果がありません:

ここに私のデータベースヘルパークラス:

public class database1 extends SQLiteOpenHelper
{
    private static final String DB_Name="database";
    private static final int DB_Version=1;
    private static final String tbl_arrival1="arrival1";
    private static final String STRING_CREATE1 = "CREATE TABLE IF NOT EXISTS "+tbl_arrival1
            +" (_f_id INTEGER PRIMARY KEY AUTOINCREMENT, "
            +"f_date TEXT,"
            +"o_rder NUMERIC,"
            +"rem_com TEXT);";
    public database1 (Context ctx)
    {
        super(ctx,DB_Name,null,DB_Version);
    }
    @Override
    public void onCreate(SQLiteDatabase database) {
        databaseQuery.onCreate(database);
      }
    public static class databaseQuery 
    {
        public static void onCreate(SQLiteDatabase database)
        {   
            database.execSQL("DROP TABLE IF EXISTS "+tbl_arrival1);
            database.execSQL(STRING_CREATE1);
        }
    }
}

私はこのデータベースヘルパーをコンテンツプロバイダーで使用しています:

database1 DBHelper ;
public Uri insert(Uri uri, ContentValues values) 
    {
        long row_id;
        SQLiteDatabase sqlDB = DBHelper.getWritableDatabase();
        row_id=sqlDB.insert(tbl_arrival1, null, values);
        if(row_id>0)
        {
            Uri _uri = ContentUris.withAppendedId(CONTENT_URI, row_id);
            getContext().getContentResolver().notifyChange(_uri, null);
            return _uri;
        }
        throw new SQLException("Failed to insert into "+uri);
    }

問題は、クエリドロップテーブルが機能していないことです。

すべての提案と回答をいただければ幸いです...

ありがとう

4

3 に答える 3

3

私は少し遅れていることを知っていますが、この質問は私に関連していました。私の場合、単一のクエリで多くのテーブルを削除しようとしました。

drop table if exists table_name1;
drop table if exists table_name2;
drop table if exists table_name3;

そのため、Androidの実装は単一のSQLステートメントexecSQL()のみを実行します

于 2016-09-19T13:02:26.220 に答える
2

onCreateデータベースが作成されると、作成時に一度だけ機能します。onUpgrade()古いバージョンに変更が加えられた場合は、テーブルを削除するために使用する必要があります

編集 http://www.vogella.com/articles/AndroidSQLite/article.html

于 2012-10-31T12:27:14.660 に答える
1

あなたのコードは問題ないようです。DROP TABLEを呼び出してから、後で再度作成します。DROP TABLEが機能していないことをどのように確認しましたか?

于 2012-10-31T12:28:51.793 に答える