1


每当我使用以下代码将多条记录插入表时,它只会插入最后一个初始化值。

下面是向表中插入数据的方法:

public long insertQuote() {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_PHID, 100);
        initialValues.put(KEY_LAT, 28.5700);
        initialValues.put(KEY_LAT, 28.4700);
        initialValues.put(KEY_LAT, 27.1833);
        initialValues.put(KEY_LAT, 26.4583);

        initialValues.put(KEY_LON, 77.3200);
        initialValues.put(KEY_LON, 77.0300);
        initialValues.put(KEY_LON, 78.0167);
        initialValues.put(KEY_LON, 80.3173);

        return db.insert(DATABASE_TABLE, null, initialValues);
    }

在这种情况下,对于列键“KEY_LAT”,我只能在 logcat 的 SOP(Sys.out.println)输出上看到最后一个初始化值“26.4583”。

其他列键“KEY_LON”也是如此。我只能看到这两个记录。

我想它们没有被插入到表中,因为put()Method 跳过了以前的"to-be-inserted"值并接受了特定列的最后一个值。

任何帮助表示赞赏。谢谢。

4

1 回答 1

4

发生这种情况是因为您对所有人使用相同的密钥 LAT 和 LON。那正在被覆盖。

您应该使用不同的键,例如

public long insertQuote() {
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_PHID, 100);
        initialValues.put(KEY_LAT1, 28.5700);
        initialValues.put(KEY_LAT2, 28.4700);
        initialValues.put(KEY_LAT3, 27.1833);
        initialValues.put(KEY_LAT4, 26.4583);

        initialValues.put(KEY_LON1, 77.3200);
        initialValues.put(KEY_LON2, 77.0300);
        initialValues.put(KEY_LON3, 78.0167);
        initialValues.put(KEY_LON4, 80.3173);

        return db.insert(DATABASE_TABLE, null, initialValues);
    }

编辑:

所以你应该使用这种方法。

public long insertQuote() {
            ContentValues initialValues = new ContentValues();
            initialValues.put(KEY_PHID, 100);
            initialValues.put(KEY_LAT, 28.5700);
            initialValues.put(KEY_LON, 77.3200);
            db.insert(DATABASE_TABLE, null, initialValues);
            initialValues.put(KEY_LAT, 28.4700);
            initialValues.put(KEY_LON, 77.0300);
            db.insert(DATABASE_TABLE, null, initialValues);
            initialValues.put(KEY_LAT, 27.1833);
            initialValues.put(KEY_LON, 78.0167);
            db.insert(DATABASE_TABLE, null, initialValues);
            initialValues.put(KEY_LAT, 26.4583);
            initialValues.put(KEY_LON, 80.3173);
            return db.insert(DATABASE_TABLE, null, initialValues);  
        }
于 2012-12-14T12:45:08.330 回答