0

我的创建表查询是:-

     String CREATE_LOGIN_TABLE ="CREATE TABLE IF NOT EXIST "+ TABLE_FORWARDMSG +"("+KEY_ID+ " INTEGER PRIMARY KEY AUTOINCREMENT,"+KEY_MSG_BODY+ " TEXT UNIQUE,"+KEY_MSG_ADDRESS+" TEXT UNIQUE,"+KEY_MSG_DATE+" TEXT UNIQUE" +")";

我是从这个代码访问值:---

String selectQuery="SELECT * FROM "+TABLE_FORWARDMSG;
     SQLiteDatabase db=this.getReadableDatabase();
 Cursor cursor=db.rawQuery(selectQuery, null);
  if( cursor.moveToFirst()){

        for(int i=0;i<cursor.getCount();i++){
            map.put("msgBody", cursor.getString(1));
            map.put("msgAddress", cursor.getString(2));
            map.put("msgDate", cursor.getString(3));
            user.add(map);
            cursor.moveToNext();

        }

       }
        cursor.close();
        db.close();

现在我的问题是:----

如果我从CREATE TABLE中删除UNIQUE然后我得到所有重复值意味着如果我插入相同的值它会创建新行,并且如果我在 CREATE TABLE 中使用 UNIQUE,那么每次cur.getCount()值都是1。我是 SQLite 的新手。请告诉我有什么问题。

4

2 回答 2

0

您的代码看起来不错。也许您不应该将 KEY_MSG_DATE 设为 UNIQUE。尝试获取有关您想要做什么的更多信息。

于 2012-11-20T13:43:40.333 回答
0

您已经实现的是,每列中的每个条目在列中必须是唯一的,但我假设您想要的是包含 msgBody、msgAddress 和 msgDate 列的行在表中必须是唯一的。

您可以通过将所有列放在 UNIQUE 子句中来实现:

UNIQUE(msgBody, msgAddress, msgDate) ON CONFLICT REPLACE
于 2012-11-20T13:43:48.537 回答