Java string.format与SQLite一起使用时未返回正确的字符串

Java string.format与SQLite一起使用时未返回正确的字符串,java,android,sqlite,android-studio,Java,Android,Sqlite,Android Studio,期望的输出:您能将[chore one]与您的一个值(例如[value one]、[value two]和[value three])关联起来吗?如果是,该活动与您的价值观有何关联 实际输出:您能否将[null]与您的一个值(例如[value one]、[value two]和[value two])关联起来?如果是,该活动与您的价值观有何关联?您能否将[chore one]与您的一个值(例如[null]、[null]和[null])关联起来?如果是,该活动与您的价值观有何关联 查询方法:

期望的输出:您能将[chore one]与您的一个值(例如[value one]、[value two]和[value three])关联起来吗?如果是,该活动与您的价值观有何关联

实际输出:您能否将[null]与您的一个值(例如[value one]、[value two]和[value two])关联起来?如果是,该活动与您的价值观有何关联?您能否将[chore one]与您的一个值(例如[null]、[null]和[null])关联起来?如果是,该活动与您的价值观有何关联

查询方法:

   public String getChoreOneWValues() {
    SQLiteDatabase db = helper.getWritableDatabase();
    //Select
    String[] columns= {StressQuizSQLiteHelper.CHORE_ONE,StressQuizSQLiteHelper.VALUE_ONE,
            StressQuizSQLiteHelper.VALUE_TWO, StressQuizSQLiteHelper.VALUE_THREE};
    Cursor cursor=db.query(StressQuizSQLiteHelper.REC_CHOICE_TABLE_NAME, columns, null, null, null, null, null);
    StringBuilder buffer=new StringBuilder();
    while(cursor.moveToNext())
    {
        int index1=cursor.getColumnIndex(StressQuizSQLiteHelper.CHORE_ONE);
        int index2=cursor.getColumnIndex(StressQuizSQLiteHelper.VALUE_ONE);
        int index3=cursor.getColumnIndex(StressQuizSQLiteHelper.VALUE_TWO);
        int index4=cursor.getColumnIndex(StressQuizSQLiteHelper.VALUE_THREE);
        String choreOne=cursor.getString((index1));
        String value1=cursor.getString((index2));
        String value2=cursor.getString((index3));
        String value3=cursor.getString((index4));
        buffer.append(String.format("Can you relate \"%s\" to one of your values (such as %s, %s and %s)?" +
                " If so, how is the activity related to your value(s)? ", choreOne, value1,value2, value3));
    }
    cursor.close();
    return buffer.toString();

}
创建表字符串:

private static final String CREATE__REC_CHOICE_TABLE = "create table "
            + REC_CHOICE_TABLE_NAME + " ("
            + REC_CHOICE_TABLE_NAME_UID
            + " integer primary key autoincrement not null,"
            + VALUE_ONE
            + " text,"
            + VALUE_TWO
            + " text,"
            + VALUE_THREE
            + " text,"
            + CHORE_ONE
            + " text,"
            + CHORE_TWO
            + " text,"
            + CHORE_THREE
            + " text,"
            + CHORE_FOUR
            + " text,"
            + CHORE_FIVE
            + " text,"
            + VALUE_JOURNAL_ENTRY_ONE
            + " text,"
            + VALUE_JOURNAL_ENTRY_TWO
            + " text,"
            + VALUE_JOURNAL_ENTRY_THREE
            + " text,"
            + VALUE_JOURNAL_ENTRY_FOUR
            + " text,"
            + VALUE_JOURNAL_ENTRY_FIVE
            + " text"
            + ");";
插入方法:

public long insertPersonalValues(String one, String two, String three){
    SQLiteDatabase db = helper.getWritableDatabase();
    ContentValues contentValues = new ContentValues();

    contentValues.put(StressQuizSQLiteHelper.VALUE_ONE, one);
    contentValues.put(StressQuizSQLiteHelper.VALUE_TWO, two);
    contentValues.put(StressQuizSQLiteHelper.VALUE_THREE, three);

    long id = db.insert(StressQuizSQLiteHelper.REC_CHOICE_TABLE_NAME, null, contentValues);
    return id;

}

public long insertChores(String one, String two, String three, String four, String five){
    SQLiteDatabase db = helper.getWritableDatabase();
    ContentValues contentValues = new ContentValues();

    contentValues.put(StressQuizSQLiteHelper.CHORE_ONE, one);
    contentValues.put(StressQuizSQLiteHelper.CHORE_TWO, two);
    contentValues.put(StressQuizSQLiteHelper.CHORE_THREE, three);
    contentValues.put(StressQuizSQLiteHelper.CHORE_FOUR, four);
    contentValues.put(StressQuizSQLiteHelper.CHORE_FIVE, five);

    long id = db.insert(StressQuizSQLiteHelper.REC_CHOICE_TABLE_NAME, null, contentValues);
    return id;
}

我使用update语句将null值更新为所需的值

如果您不希望为NULL,请将“notnull”添加到CREATE table中,为什么要将4个值为NULL的问题归咎于
String.format()
?这与
String.format()
无关。我看不到任何代码插入值,也看不到任何证据表明存在具有非空值的记录。@DiegoTorresMilano添加了非空值。现在我得到一个空字符串作为输出。我不知道这些空值是如何被插入到我的数据库中的。在我看来,值和杂务被保存为两行。这就是它们填充空值的原因。如何将“杂务”保存在与“值”相同的主键下?