这是一个空数据库,用于使用Java进行CRUD Android应用程序,我想在此SQLite中输入初始数据,而无需首先安装应用程序,因此如果他们安装应用程序,则会有可见的初始数据。如何在此数据库中输入初始数据?
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DataHelper extends SQLiteOpenHelper {
public static final String DB_NAME = "contacts.db";
public static final String TABLE_NAME = "CONTACTS";
public static final int DB_VERSION = 3;
public static final String COLUMN_1 = "ID";
public static final String COLUMN_2 = "NMPENYAKIT";
public static final String COLUMN_3 = "DESKRIPSI";
public static final String COLUMN_4 = "GEJALA";
public static final String COLUMN_5 = "SOLUSI";
public static final String COLUMN_6 = "IMAGE";
public static final String QUERY_CREATE = "CREATE TABLE "+TABLE_NAME+" ("
+COLUMN_1+" INTEGER PRIMARY KEY AUTOINCREMENT, "
+COLUMN_2+" TEXT, "
+COLUMN_3+" TEXT, "
+COLUMN_4+" TEXT, "
+COLUMN_5+" TEXT, "
+COLUMN_6+" TEXT)";
public DataHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, DB_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(QUERY_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
onCreate(db);
}
public void insertData(ContentValues values){
getWritableDatabase().insert(TABLE_NAME, null, values);
}
}
2条答案
按热度按时间lvmkulzt1#
在安装应用程序之前无法插入数据,因为DB基于应用程序上下文,其数据存储在以应用程序包命名的自己的本地文件夹中。
理想情况下,您希望在启动时插入数据,并有某种方法或注意到数据已安装,例如检查DB是否为空或将其保存到共享首选项。
我还建议在启动画面中进行插入操作,如果数据量很大,一旦完成,您可以加载到UI中以可视化数据。
n6lpvg4x2#
可以嵌入预填充的数据库并在首次启动时安装它。
您只需要创建包含要嵌入的数据的db文件,并将其存储在asset文件夹中。
例如,使用Room,您必须覆盖
RoomDatabase
对象以从文件创建DB