我在stackoverflow上看到了很多问题,但没有一个解决方案有效。 我想在创建时只在数据库中添加一行,应用程序唯一要做的就是使用新值更新此行。
我尝试在SQLiteOpenHelper类中编写INSERT语句但它不起作用。没有插入行。
代码:
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)");
}
但是如果我尝试使用我在SQLiteOpenHelper类中声明的方法从mainActivity类插入一行,则该行已成功插入,但每次运行应用程序时都会添加一行...
代码:
// 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();
}
我想只插入行一次。
答案 0 :(得分:0)
我没有看到问题出在哪里,你有一个可以正常工作和插入的代码,提供更多逻辑来检查INSERT之前是否存在该行。
无论如何,助手类不应该插入行。