gpt4 book ai didi

android - SQLite 约束异常 : error code 19: constraint failed Android

转载 作者:行者123 更新时间:2023-11-29 00:36:54 25 4
gpt4 key购买 nike

我正在尝试将纬度和经度坐标插入到 SQLite 表中,但我得到了 SQLiteConstraintException: error code 19: constraint failed

我的代码被 try/catch 包围并且没有抛出异常。我在 logcat 中收到约束错误。

我已经附加了数据库类和来 self 的主要 Activity 的调用。非常感谢任何帮助或指导!

以下是我的 logcat 中的前几行:

08-25 14:39:06.934: E/SQLiteDatabase(681): Error inserting lat=59310767 longi=-8613281
08-25 14:39:06.934: E/SQLiteDatabase(681): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
08-25 14:39:06.934: E/SQLiteDatabase(681): at android.database.sqlite.SQLiteStatement.native_executeInsert(Native Method)
08-25 14:39:06.934: E/SQLiteDatabase(681): at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:113)
08-25 14:39:06.934: E/SQLiteDatabase(681): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1745)
08-25 14:39:06.934: E/SQLiteDatabase(681): at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1618)

这是来 self 的 DbHelper 的代码:

public void onCreate(SQLiteDatabase db) 
{
// TODO Auto-generated method stub
db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" +
KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
KEY_LAT + " REAL NOT NULL, " +
KEY_LONGI + " REAL NOT NULL)"

// KEY_NAME + " TEXT NULL, " +
// KEY_INFO + " TEXT NULL);"
);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
onCreate(db);
}

这是我的数据库管理器

public DatabaseManager(Context c) {
ourContext = c;
}

public DatabaseManager open() throws SQLException {
ourHelper = new DbHelper(ourContext);
ourDB = ourHelper.getWritableDatabase(); //example show writeable
return this;
}

public void close() {
ourHelper.close();
}

public long createPin(long latitude, long longitude) {
ContentValues cv = new ContentValues();
cv.put(KEY_LAT, latitude);
cv.put(KEY_LONGI, longitude);

return ourDB.insert(DATABASE_TABLE, null, cv);
}

这是来 self 的 MainActivity 的调用:

try{
long longitude= touchedPoint.getLongitudeE6();
long latitude= touchedPoint.getLatitudeE6();

//Add Pin to the Database
DatabaseManager db = new DatabaseManager(MainActivity.this);
db.open();
db.createPin(latitude,longitude);
db.close();
}

最佳答案

删除关键字 AUTOINCREMENT。sqlite 不是必需的。如果您尝试将空值插入主整数键,该字段会自动转换为比该列的最大值大 1 的整数。

此外,您必须清除模拟器上的应用数据。之后你可以确定数据库是空的。

关于android - SQLite 约束异常 : error code 19: constraint failed Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12123158/

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