Android:在数据库创建时只在数据库中插入一行
我见过许多关于stackoverflow的问题,但没有一个解决方案有效。 我只想在创建数据库时在数据库中添加一行,应用程序所做的唯一事情就是用新值更新这一行 我曾尝试在SQLiteOpenHelper类中编写INSERT语句,但它不起作用。不插入任何行 代码: 但是,如果我尝试使用在SQLiteOpenHelper类中声明的方法从mainActivity类插入一行,该行将成功插入,但每次运行应用程序时都会添加新行 代码:Android:在数据库创建时只在数据库中插入一行,android,database,sqlite,Android,Database,Sqlite,我见过许多关于stackoverflow的问题,但没有一个解决方案有效。 我只想在创建数据库时在数据库中添加一行,应用程序所做的唯一事情就是用新值更新这一行 我曾尝试在SQLiteOpenHelper类中编写INSERT语句,但它不起作用。不插入任何行 代码: 但是,如果我尝试使用在SQLiteOpenHelper类中声明的方法从mainActivity类插入一行,该行将成功插入,但每次运行应用程序时都会添加新行 代码: 我只想插入一次行。我看不出问题出在哪里,您有一个可以正常工作并成功插入的代
我只想插入一次行。我看不出问题出在哪里,您有一个可以正常工作并成功插入的代码,请在插入之前提供更多逻辑来检查行是否存在
而且helper类无论如何都不应该插入行。如果helper类不应该插入行,那么我应该使用什么逻辑仅在创建数据库时插入一次行?只需运行select查询并检查行是否存在。如果不是insert,则insert语句非常简单,但必须确保调用了
onCreate
。
public class db_manager extends SQLiteOpenHelper{
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "tally.db";
private static final String TABLE_TALLY = "tally";
private static final String COLUMN_ID = "_id";
private static final String COLUMN_VALUE = "value";
public db_manager(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, DATABASE_NAME, factory, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db) {
String query = "CREATE TABLE " + TABLE_TALLY + "(" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
COLUMN_VALUE + " TEXT " +
");";
db.execSQL(query);
db.execSQL("INSERT INTO tally(value) VALUES (100)");
}
// In mainActivity
DM = new db_manager(this,null,null,1);
DM.WriteFirst(10);
//In SQLiteOpenHelper class
public void WriteFirst(int value){
ContentValues values = new ContentValues();
values.put(COLUMN_VALUE, value);
SQLiteDatabase db = getWritableDatabase();
db.insert(TABLE_TALLY, null, values);
db.close();
}