回答

收藏

android sqlite若不存在,则创建表

技术问答 技术问答 289 人阅读 | 0 人回复 | 2023-09-14

在创建新手表时遇到了一些问题。当我使用它时CREATE
9 X! u6 ]0 q& r/ w9 H2 P3 b% ETABLE在命令中,我的新手表将以应有的形式出现,但当我退出活动时,应用程序会崩溃,并且会崩溃logcat已经存在于表中的信息。如果我使用它CREATE
) v6 C# b( W9 D# M! V' gTABLE IF NOT" J/ ^- J; P. ^! l# l+ j7 z& [3 Q
EXISTS如果不存在,就不会形成新的手表,只会在上一个手表中添加新的数据线,不会崩溃。这有什么问题?我想没有它的手表,这样我就可以存在了,我想添加它而不是添加到其他手表。( l4 |. @! H$ ?# F5 U/ ~3 M
SqliteHelper类:
# j# Z+ A6 x1 U2 }public class MySQLiteHelper extends SQLiteOpenHelper {public static final String TABLE_NAME = MainActivity.NameName;public static final String COLUMN_ID = "_id";public static final String COLUMN_COMMENT = "comment";public static final String COLUMN_LAT = "lat";public static final String COLUMN_LONG = "long";public static final String COLUMN_RADI = "radi";private static final String DATABASE_NAME = "spraylogs.db";private static final int DATABASE_VERSION = 1;public static final String NEWTABLE = "CREATE TABLE  "           TABLE_COMMENTS   "("   COLUMN_ID            " integer primary key autoincrement,"   COLUMN_COMMENT            " text not null,"   COLUMN_LAT  ","    COLUMN_LONG   ","   COLUMN_RADI    ");";public static final String SaveIt = "CREATE TABLE IF NOT EXISTS "           TABLE_COMMENTS   "("   COLUMN_ID            " integer primary key autoincrement,"   COLUMN_COMMENT            " text not null,"   COLUMN_LAT  ","    COLUMN_LONG   ","   COLUMN_RADI    ");"; MySQLiteHelper(Context context) {  super(context,context.getExternalFilesDir(null).getAbsolutePath()   "/"   DATABASE_NAME,null,DATABASE_VERSION);}@Overridepublic void onCreate(SQLiteDatabase database) {}@Overridepublic void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) {Log.w(MySQLiteHelper.class.getName(),   "Upgrading database from version "   oldVersion   " to "          newVersion   ",which will destroy all old data");db.execSQL("DROP TABLE IF EXISTS "   NEWTABLE);onCreate(db);                 ! Z  N4 w9 r* A& ~9 [
    解决方案:                                                                8 y6 {; ?, n, V1 t" g
                                                                这就是它应该如何工作。CREATE TABLE若表已存在,则抛出异常。CREATE TABLE IF NOTEXISTS若该表不存在,则创建该表,或者该表不存在,则忽略该命令。若要删除旧表,请使用DELETE TABLE IFEXISTSbefore CREATE TABLE。如需更改架构,请使用ALTER TABLE,而不要使用CREATE TABLE。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则