使用ContentValues在Sqlite数据库中的两个列中插入多个记录

时间:2012-12-14 12:42:47

标签: java android sqlite sqliteopenhelper


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

这是将数据插入表格的方法:

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"我只能看到最后的初始化值" 26.4583"在logcat上的S.O.P(Sys.out.println)输出上。

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

我认为他们没有像put()方法那样插入到表中,方法会跳过以前的"to-be-inserted"值并接受最后一个特别栏目。

感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分: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);  
        }