【问题标题】:Inserting Multiples Records into Two Columns in Sqlite Database using ContentValues使用 ContentValues 将多条记录插入 Sqlite 数据库中的两列
【发布时间】:2012-12-02 11:16:11
【问题描述】:


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

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

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 的 S.O.P (Sys.out.println) 输出中看到最后一个初始化值“26.4583”。

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

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

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

【问题讨论】:

    标签: java android sqlite sqliteopenhelper


    【解决方案1】:

    发生这种情况是因为您对所有人使用相同的密钥 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);  
            }
    

    【讨论】:

    • 使用不同的“KEY_LAT1, ..KEY_LAT3..”意味着不同的列名。因为 KEY_LAT 和 KEY_LON 被声明为:public String KEY_LAT = "LATS"; public String KEY_LON = "LONS"; 这里 LATS 和 LONS 是单个表中的 2 个不同的列字段。你的意思是说我应该声明 KEY_LAT1="LATS" 和 KEY_LAT2="LATS" 等等..?
    • 这是我的表结构:phID (of type integer) | LATS (of type real)| LONS (of type real) 我希望所有 KEY_LAT 值都在一个名为 LATS 的列中,所有 KEY_LON 值都在另一个名为 LONS 的列中
    猜你喜欢
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2018-05-07
    • 2013-06-03
    • 2021-03-11
    相关资源
    最近更新 更多