Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:在数据库创建时只在数据库中插入一行_Android_Database_Sqlite - Fatal编程技术网

Android:在数据库创建时只在数据库中插入一行

Android:在数据库创建时只在数据库中插入一行,android,database,sqlite,Android,Database,Sqlite,我见过许多关于stackoverflow的问题,但没有一个解决方案有效。 我只想在创建数据库时在数据库中添加一行,应用程序所做的唯一事情就是用新值更新这一行 我曾尝试在SQLiteOpenHelper类中编写INSERT语句,但它不起作用。不插入任何行 代码: 但是,如果我尝试使用在SQLiteOpenHelper类中声明的方法从mainActivity类插入一行,该行将成功插入,但每次运行应用程序时都会添加新行 代码: 我只想插入一次行。我看不出问题出在哪里,您有一个可以正常工作并成功插入的代

我见过许多关于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();
}