- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这段代码让我崩溃并告诉我:
SQLiteConstraintException: columns Count, Date, Time, Lat, Lng, UserCode, LatLng are not unique (code 19)
这是我的代码:
public class Query_B extends SQLiteOpenHelper {
// database version
private static final int DATABASE_VERSION = 7;
// database name
protected static final String DATABASE_NAME = "xxxxxx";
// table details
public String tableName = "ReportAct_tbl";
public String fieldRepID = "RepID";
public String fieldCount = "Count";
public String fieldDate = "Date";
public String fieldTime = "Time";
public String fieldLat = "Lat";
public String fieldLng = "Lng";
public String fieldUserCode = "UserCode";
public String fieldLatLng = "LatLng";
public Query_B(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "";
sql += "CREATE TABLE " + tableName;
sql += " ( ";
sql += fieldRepID + " INTEGER PRIMARY KEY AUTOINCREMENT, ";
sql += fieldCount + " TEXT, ";
sql += fieldDate + " TEXT, ";
sql += fieldTime + " TEXT, ";
sql += fieldLat + " TEXT, ";
sql += fieldLng + " TEXT, ";
sql += fieldUserCode + " TEXT, ";
sql += fieldLatLng + " TEXT ";
sql += " ) ";
db.execSQL(sql);
String INDEX = "CREATE UNIQUE INDEX locations_index ON "
+ tableName + " (Count, Date, Time, Lat, Lng, UserCode, LatLng)";
db.execSQL(INDEX);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
String sql = "DROP TABLE IF EXISTS " + tableName;
db.execSQL(sql);
onCreate(db);
}
public void InsertFast(List<Marketing_Points_B> values) {
String sql = "INSERT INTO " + tableName + " ( Count, Date, Time, Lat, Lng, UserCode, LatLng ) VALUES ( ?, ?, ?, ?, ?, ?, ? )";
SQLiteDatabase db = this.getWritableDatabase();
db.beginTransactionNonExclusive();
SQLiteStatement stmt = db.compileStatement(sql);
for (int i = 0; i < values.size(); i++) {
stmt.bindString(1, values.get(i).getCounts());
stmt.bindString(2, values.get(i).getDate());
stmt.bindString(3, values.get(i).getTime());
stmt.bindString(4, String.valueOf(values.get(i).getLat()));
stmt.bindString(5, String.valueOf(values.get(i).getLng()));
stmt.bindString(6, values.get(i).getUserCode());
stmt.bindString(7, String.valueOf(values.get(i).getmPosition()));
stmt.execute();
stmt.clearBindings();
}
db.setTransactionSuccessful();
db.endTransaction();
db.close();
}
// deletes all records
public void deleteRecords() {
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("delete from " + tableName);
db.close();
}
}
最佳答案
当您使用 CREATE UNIQUE INDEX
时,不允许重复值。
但是您的列 Count, Date, Time, Lat, Lng, UserCode, LatLng
可以包含重复值,因为它不是唯一的。因此你有这个异常(exception)
您可以使用 CREATE INDEX
而不是 CREATE UNIQUE INDEX
(因为 CREATE INDEX
允许重复值)
关于android - SQLiteStatement - 列不是唯一的 - Android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38890888/
我正在尝试更新我正在从2.4.3版开发到2.5.2版的Android应用程序上的Room数据库,这些是我的gradle.build文件中的Room依赖项。该应用程序成功编译和构建,但不幸的是,在运行时
在Android 的sqlite 类中,有一个名为SQLiteStatement 的类,您可以通过使用SqliteDatabase.compileStatement() 编译一条语句来获得该类。 它是
这段代码让我崩溃并告诉我: SQLiteConstraintException: columns Count, Date, Time, Lat, Lng, UserCode, LatLng are n
我正在使用 simpleQueryForLong()方法如下: mResuableStatment = DatabaseHandler.database.compileStatement(
我有一个预编译的插入语句,看起来像这样 this.insertStmt = this.db.compileStatement("INSERT INTO " + TABLE_NAME + " (name
使用SQLiteStatement的插入代码通常是这样的, String sql = "INSERT INTO table_name (column_1, column_2, column_3) VA
在Android中向SQLite数据库插入记录哪种方法更好?为什么? SQLiteDatabase.insert(字符串表,字符串 nullColumnHack,ContentValues 值) 或
我尝试保存到 Sqlite Event public class EventDao{ private SQLiteStatement insertStatement; private
您是否知道如何预编译 SELECT 语句返回 Cursor 并多次使用它的解决方法(我 99% 确定它可以使用 sqlite,因为 java 桌面驱动程序允许使用 SELECT 返回游标进行预编译)?
我想在 Android Studio 中的 SQLite 数据库的表中插入值。我想问我应该从下面给定的两种方法中选择哪种方法。我从类(class)中学到了第一种方法,但我想使用第二种方法。这就是我问这
我使用以下代码在数据库中有效地插入新行: @Override public void insertImpacts(HolderExpense expense, int[] shares, int[]
我在优化 SQLite 事务时使用经过编译的 SQLiteStatement 和事务,但我正在阅读 execute 的文档功能: Execute this SQL statement, if it i
我想执行下面的 SQL 语句: UPDATE X SET y=10 WHERE z IN (1,2,3,4); 由于集合可以包含任意数量的元素,因此我创建了以下 SQL 字符串语句: UPDATE X
在搜索如何调试 sqlite 时,我遇到了命令adb shell setprop log.tag.SQLiteStatements VERBOSE但它似乎没有在我的设备 运行 CyanogenMod
我对 MonoDroid 上 SQLite 数据库中的表有一个简单的插入语句。 插入数据库时显示 SQLite error Insufficient parameters supplied to
我是一名优秀的程序员,十分优秀!