【问题标题】:SQLite : insert array string into table not increased IDSQLite:将数组字符串插入表中未增加 ID
【发布时间】:2017-03-30 05:29:57
【问题描述】:

尝试将字符串数组插入表中,但插入的 id 没有增加,并且第一个字符串已插入。我对 id 使用自动增量?

表创建

//Multi Farm Table
String CREATE_MULTI_FARM_TABLE = "CREATE TABLE " + TABLE_MULTI_FARM + "(" +
        KEY_MULTI_FARM_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
        KEY_MULTI_FARM_FARM_NAME + " TEXT" + ")";
db.execSQL(CREATE_MULTI_FARM_TABLE);

插入记录函数

//Add Multi Farm
public void addMultiFarm(MultiFarmModel multiFarm) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(KEY_MULTI_FARM_ID, multiFarm.getId());
    values.put(KEY_MULTI_FARM_FARM_NAME, multiFarm.getFarmName());
    //Insert Record
    Log.e("StringInsertId", "" + db.insert(TABLE_MULTI_FARM, null, values));
    db.close();
}

类中的函数

public MultiFarmModel(String farmName){
    this.farmName = farmName;
}

插入代码

String smsContent = "InsertToTable A|B|C|D|E";
DBHandler db = new DBHandler(context);
                smsContent = smsContent.substring(smsContent.indexOf(" ")+1);
                String[] string = smsContent.split("\\|");
                db.deleteAllMultiFarmRecord();
                for (String s : string) {
                    Log.e("StringToInsert", s + " ? ");
                    db.addMultiFarm(new MultiFarmModel(s));
                }
            }

日志控制台

E/String Number: A|B|C|D|E
E/StringToInsert: A ? 
E/StringInsertId: 0
E/StringToInsert: B ? 
E/StringInsertId: -1
E/StringToInsert: C ? 
E/StringInsertId: -1
E/StringToInsert: D ? 
E/StringInsertId: -1
E/StringToInsert: E ? 
E/StringInsertId: -1

【问题讨论】:

  • 不需要输入values.put(KEY_MULTI_FARM_ID, multiFarm.getId());,因为它会自动递增。

标签: java android sqlite android-studio


【解决方案1】:

删除此 KEY_MULTI_FARM_ID 行,因为它是自动递增列...您传递的值相同,这就是它抛出错误的原因

public void addMultiFarm(MultiFarmModel multiFarm) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();
   // values.put(KEY_MULTI_FARM_ID, multiFarm.getId()); 
    values.put(KEY_MULTI_FARM_FARM_NAME, multiFarm.getFarmName());
    //Insert Record
    Log.e("StringInsertId", "" + db.insert(TABLE_MULTI_FARM, null, values));
    db.close();
}

【讨论】:

  • 没错,如果要存储multiFarm.getId() 的值,请在数据库中添加另一列。
  • yap ty 它的解决方案
猜你喜欢
  • 2020-03-06
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-06
相关资源
最近更新 更多