LG v20上的单个Android用户无法保存到SQLite

LG v20上的单个Android用户无法保存到SQLite,android,sqlite,Android,Sqlite,我是一个业余爱好者,没有正式的编码背景。我为我的专业人员创建了一个Android应用程序来记录他们的员工。我有1600个活动用户,但只有一个(到目前为止)无法将数据插入SQLite数据库表。他正在使用LG v20,并向我发送了一个屏幕截图,验证他是否输入了所有必需的字段。其中三个字段为“非空”,其中一个字段必须为“唯一”。他还向我保证,他没能拯救任何人,所以这个独特的因素不应该起作用。是否有其他人遇到此问题并找到了解决方法?下面是此表的数据库帮助程序代码 private static final

我是一个业余爱好者,没有正式的编码背景。我为我的专业人员创建了一个Android应用程序来记录他们的员工。我有1600个活动用户,但只有一个(到目前为止)无法将数据插入SQLite数据库表。他正在使用LG v20,并向我发送了一个屏幕截图,验证他是否输入了所有必需的字段。其中三个字段为“非空”,其中一个字段必须为“唯一”。他还向我保证,他没能拯救任何人,所以这个独特的因素不应该起作用。是否有其他人遇到此问题并找到了解决方法?下面是此表的数据库帮助程序代码

private static final String CREATE_TABLE_PERSONNEL = "CREATE TABLE "
        + TABLE_PERSONNEL + "(" + PERSONNEL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + RANK
        + " TEXT NOT NULL," + LAST_NAME + " TEXT NOT NULL," + FIRST_NAME + " TEXT," + MIDDLE_NAME +
        " TEXT," + SECTION + " TEXT," + DODI + " TEXT UNIQUE NOT NULL," + DOB + " DATETIME," + DOR + " DATETIME," +
        MOS + " TEXT," + DUTY_POSITION + " TEXT," + DEROS + " DATETIME," +
        ETS + " DATETIME," + BASD + " DATETIME," + ARRIVAL_DATE + " DATETIME," +
        CIV_ED + " TEXT," + MIL_ED + " TEXT," + ALLERGIES + " TEXT," + HOT_INJURY + " TEXT," +
        COLD_INJURY + " TEXT," + ADDRESS + " TEXT," + ADDRESS_CITY + " TEXT," + ADDRESS_STATE +
        " TEXT," + ADDRESS_ZIP + " TEXT," + PHONE + " TEXT," + NOK + " TEXT," + NOK_PHONE + " TEXT," +
        NOK_ADDRESS + " TEXT," + NOK_CITY + " TEXT," + NOK_STATE + " TEXT," + NOK_ZIP +
        " TEXT," + PROMOTABLE + " TEXT," + RANK_SORT + " INTEGER," + SUPER_DODI + " TEXT," +
        BLOOD_TYPE + " TEXT" + ")";


public void onCreate(SQLiteDatabase db) {

    db.execSQL(CREATE_TABLE_PERSONNEL);
}


boolean insertPerson(String rank, String lastName, String firstName, String middleInitial,
                     String section, String dodi, String dob, String dor, String mos, String duty,
                     String deros, String ets, String basd, String arrival, String civEd,
                     String milEd, String allergies, String hot, String cold, String address, String city,
                     String state, String zip, String phone, String nok, String nokPhone,
                     String nokAddress, String nokCity, String nokState, String nokZip,
                     String promote, int rankSort, String superDodi, String blood){

    ContentValues personnelValues = new ContentValues();
    personnelValues.put(RANK, rank);
    personnelValues.put(LAST_NAME, lastName);
    personnelValues.put(FIRST_NAME, firstName);
    personnelValues.put(MIDDLE_NAME, middleInitial);
    personnelValues.put(SECTION, section);
    personnelValues.put(DODI, dodi);
    personnelValues.put(DOB, dob);
    personnelValues.put(DOR, dor);
    personnelValues.put(MOS, mos);
    personnelValues.put(DUTY_POSITION, duty);
    personnelValues.put(DEROS, deros);
    personnelValues.put(ETS, ets);
    personnelValues.put(BASD, basd);
    personnelValues.put(ARRIVAL_DATE, arrival);
    personnelValues.put(CIV_ED, civEd);
    personnelValues.put(MIL_ED, milEd);
    personnelValues.put(ALLERGIES, allergies);
    personnelValues.put(HOT_INJURY, hot);
    personnelValues.put(COLD_INJURY, cold);
    personnelValues.put(ADDRESS, address);
    personnelValues.put(ADDRESS_CITY, city);
    personnelValues.put(ADDRESS_STATE, state);
    personnelValues.put(ADDRESS_ZIP, zip);
    personnelValues.put(PHONE, phone);
    personnelValues.put(NOK, nok);
    personnelValues.put(NOK_ADDRESS, nokAddress);
    personnelValues.put(NOK_CITY, nokCity);
    personnelValues.put(NOK_STATE, nokState);
    personnelValues.put(NOK_ZIP, nokZip);
    personnelValues.put(NOK_PHONE, nokPhone);
    personnelValues.put(PROMOTABLE, promote);
    personnelValues.put(RANK_SORT, rankSort);
    personnelValues.put(SUPER_DODI, superDodi);
    personnelValues.put(BLOOD_TYPE, blood);
    SQLiteDatabase db = getWritableDatabase();
    long result = db.insert(TABLE_PERSONNEL, null, personnelValues);
    db.close();
    return result != -1;
}
这是我插入值的活动代码

public void savePerson() {
    getStrings();
    boolean inserted = dbHelper.insertPerson(rankString, lastString, firstString, miString,
            sectionString, dodiString, dobString, dorString, mosString, dutyString, derosString,
            etsString, basdString, arrivalString, civEdText, milEdText, allergiesText, hotText,
            coldText, addressString, cityString, stateString, zipString, phoneString, nokString,
            nokPhoneString, nokAddressString, nokCityString, nokStateString, nokzipString, promoteString,
            rankSort, superDodi, bloodString);
    if (inserted) {
        Intent intent = new Intent(this, PersonDetailsActivity.class);
        intent.putExtra("DODI", dodiString);
        this.startActivity(intent);
    } else {
        Toast.makeText(this, "Data not inserted - Check Rank, Last Name, and DODI", Toast.LENGTH_LONG).show();
    }
}

你没有任何错误日志吗?错误是什么?他得到祝酒词了吗?@CL,我没有错误日志,他只是得到祝酒词,因为'insertPerson'返回false。我的手机上没有此问题,我已确保从Play Store下载了最新版本。仅当您要抑制任何错误消息时,才使用
insert()
。最好将其替换为
insertOrThrow()
。您没有任何错误日志吗?错误是什么?他得到祝酒词了吗?@CL,我没有错误日志,他只是得到祝酒词,因为'insertPerson'返回false。我的手机上没有此问题,我已确保从Play Store下载了最新版本。仅当您要抑制任何错误消息时,才使用
insert()
。最好将其替换为
insertOrThrow()