gpt4 book ai didi

android - SQLite Android 中的负 id 值

转载 作者:行者123 更新时间:2023-11-30 02:56:09 25 4
gpt4 key购买 nike

在我创建数据库的主要 Activity 中

class DBHelper extends SQLiteOpenHelper {

public DBHelper(Context context) {

super(context, "myDB", null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table mytable ("
+ "id integer primary key autoincrement,"
+ "name text,"
+ "obId text,"
+ "latit text,"
+ "long text" + ");");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}
}

在第二个 Activity 中我调用数据库类

MainActivity myActivity = new MainActivity();
dbHelper = myActivity.new DBHelper(myActivity);

并插入数据

ContentValues cv = new ContentValues();
db = openOrCreateDatabase("myDB.db", SQLiteDatabase.OPEN_READWRITE, null);
cv.put("name", textViewName.getText().toString());
long rowID = db.insert("mytable", null, cv);
db.insert("mytable", null, cv);
dbHelper.close();

输出“rowID”为“-1”。我不明白为什么会这样

最佳答案

在数据库助手上使用 getWritableDatabase() 而不是在 Context 上使用 openOrCreateDatabase() 来获取数据库引用。您正在操作两个不同的数据库,其中另一个没有您要插入的表。

另外,您要插入相同的数据两次。

If I use db = dbHelper.getWritableDatabase(); I will in Log java.lang.NullPointerException at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:203) at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.ja‌​va:118) at com.ex.test.AddPoint.writePointsToDatabase(Add.java:264) at com.ex.test.AddPoint$3$2.onClick(Add.java:238)

那是因为你在这里传递了一个无效的 Context 给 helper:

MainActivity myActivity = new MainActivity();
dbHelper = myActivity.new DBHelper(myActivity);

您不能使用 new 实例化 Activity 。在 Activity 中,使用 this 来引用有效的 Context

关于android - SQLite Android 中的负 id 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23228098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com