Java string.format与SQLite一起使用时未返回正确的字符串
期望的输出:您能将[chore one]与您的一个值(例如[value one]、[value two]和[value three])关联起来吗?如果是,该活动与您的价值观有何关联 实际输出:您能否将[null]与您的一个值(例如[value one]、[value two]和[value two])关联起来?如果是,该活动与您的价值观有何关联?您能否将[chore one]与您的一个值(例如[null]、[null]和[null])关联起来?如果是,该活动与您的价值观有何关联 查询方法: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])关联起来?如果是,该活动与您的价值观有何关联 查询方法:
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添加了非空值。现在我得到一个空字符串作为输出。我不知道这些空值是如何被插入到我的数据库中的。在我看来,值和杂务被保存为两行。这就是它们填充空值的原因。如何将“杂务”保存在与“值”相同的主键下?