我需要将初始值添加到SQLite数据库,一旦应用程序第一次启动。我应该怎么做?如何将初始数据添加到SQLite数据库?
8
A
回答
13
在DBAdapter.java类文件中,你可以这样做。
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_1);
db.execSQL(CREATE_TABLE_2);
db.execSQL(CREATE_TABLE_3);
db.execSQL("insert into " + DATABASE_TABLE3 + "(" + KEY_ROWID + ","
+ KEY_DEF + ") values(1,'')");
}
喜欢这类型。
2
像这样的一次或第一次加载的要求很常见。
1)设置一个名为FIRSTLOAD的标志变量并将其设置为True。请务必将此变量保存到设备中的独立存储中,以便每次启动应用程序时都能读回。 2)创建一个检查FIRSTLOAD值的方法,只有在FIRSTLOAD为真时才执行。把你的代码'添加到SQLite数据库的初始值'在这里。然后将FIRSTLOAD变量设置为false。这样它只会执行一次代码!
Boolean FIRSTLOAD= new Boolean("true");
void SetInitialValues()
{
if(!FIRSTLOAD)
return;
// insert your code to run only when application is started first time here
FIRSTLOAD = False;
}
2
您可以创建自己的SQLite数据库,把资产目录和访问它,如在这个环节的答案: adding your own SQLite database to an android application
2
你应该使用SQLiteOpenHelper这个
private static class OpenHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "rss.sqlite";
private static final int DATABASE_VERSION = 1;
OpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE RSS (TITLE TEXT, LINK TEXT, DESCR TEXT, PUBDATE DATE, GUID TEXT, READ TEXT, TYPE TEXT)");
db.execSQL("CREATE TABLE PAGE (LINK TEXT, CONTENT TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
}
并在代码中使用它
OpenHelper openHelper = new OpenHelper(this.context);
this.db = openHelper.getWritableDatabase();
0
你应该每次在应用程序中首次打开数据库时,请检查数据库中的对象数量。 不要忘记,用户可以释放所有数据。
//Open DataBase
MyDb.Open();
//Get All List
MyCursor = MyDb.getAllNames(); //You should have a function to get all the table data
//First Time we open Database, add default Values
if (MyCursor.getCount() < 1)
{
AddDefaultValuesToDataBase();
}
从这里您可以继续获取值。
希望它有帮助, BR, 阿德里安。
1
如果您使用org.droidparts库OR-Mapper访问数据库,可以这样做。
在你执行
public class CategoryEntityMgr extends EntityManager<Category> {
public CategoryEntityMgr(Context ctx) {
super(Category.class, ctx);
}
// NEW --> this one must be used in onCreateTables or you will receive a database locked exception
private CategoryEntityMgr(Context ctx, SQLiteDatabase db) {
super(Category.class, ctx, db);
}
}
在您的实现AbstractDbOpenHelper的:
protected void onCreateTables(SQLiteDatabase db) {
// create your tables as usual
createTables(db, Booking.class, Category.class);
// Use a new instance of your entity manager
// but use the 2nd constructor to provide the db connection
CategoryEntityMgr mgr = new CategoryEntityMgr(ctx, db);
// add the new table row/entity you an to have
Category c = new Category();
c.name = "the value for this column";
mgr.createOrUpdate(c);
}
+0
如果这是一个通用的答案,而不是绑定到特定的库实现,那会更好。 – Levon 2017-05-22 20:15:34
相关问题
- 1. 将数据添加到SQLite数据库
- 2. 将列添加到sqlite数据库
- 3. 将数据添加到SQLite
- 4. 初始数据添加到数据库中
- 5. 将大量数据添加到C#中的SQLite数据库
- 6. 数据将不会添加到SQLite数据库
- 7. 如何将List的内容添加到SQLite数据库?
- 8. 如何从数据库sqlite中将值添加到uipickerview?
- 9. 如何将SQLite数据库添加到iOS(CoreData)应用程序?
- 10. 如何将新列添加到Android SQLite数据库?
- 11. Android - 将数据添加到数据库
- 12. 将数据添加到JanusGraph数据库
- 13. 将数据添加到数据库中
- 14. 如何将数据库添加到IList?
- 15. 首先sqLite数据库:试图将整数添加到数据库
- 16. Android sqlite数据库等待数据初始填充完成
- 17. python-将动态列数添加到sqlite数据库
- 18. 如何将一个数据库表中的数据添加到SQLite中另一个数据库的表中
- 19. 如何将XML Feed中的数据添加到MySQL数据库
- 20. 如何将数据添加到数据库? PHP MySQL
- 21. 如何将Xml数据添加到Accsess数据库错误
- 22. 如何将xml数据添加到postgresql数据库
- 23. 如何将用户自定义数据添加到数据库?
- 24. iphone sdk:添加数据到sqlite数据库不工作?
- 25. 如何在SQLITE数据库中将数据添加为密码保护字段?
- 26. 在初始化数据库上加入数据库ax ax
- 27. 将初始数据添加到使用JavaScript的Django ModelForm(JQuery)
- 28. 如何初始化数据库从
- 29. 如何处理数据库初始化?
- 30. 如何初始化MySQL数据库?
难道只能用于应用程序或每次第一次运行的运行? – 2013-07-01 07:47:07
@Setayeshi,来自developer.android.com“首次创建数据库时调用,这是创建表和初始表的总体应该发生的地方。” – 2015-07-01 14:43:46