Android:在数据库创建时仅在数据库中插入一次

时间:2015-10-04 22:41:28

标签: android database sqlite

我在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();
}

我想只插入行一次。

1 个答案:

答案 0 :(得分:0)

我没有看到问题出在哪里,你有一个可以正常工作和插入的代码,提供更多逻辑来检查INSERT之前是否存在该行。

无论如何,助手类不应该插入行。