2015-10-04 118 views
2

我已经看到了很多关于stackoverflow的问题,但没有一个解决方案可以工作。 我想在创建时只在数据库中添加1行,并且该应用程序所做的唯一事情是使用新值更新此行。Android:在数据库创建时只在数据库中插入一行

我已经尝试在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

INSERT语句有效,但您必须确保调用了“onCreate”。 –

回答

0

我看不出问题出在哪里,你有一个工作和插入成功的代码,提供更多的逻辑来检查该行是否存在于INSERT之前。

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

+0

如果辅助类不应该插入一行,那么我应该使用什么逻辑来只在数据库创建时插入一行? –

+0

只需运行一个select查询并检查该行是否存在。如果不插入它非常简单 – meda