我有以下代码,其中,我从sqlite数据库中获取数据。每当数据升级时我都能很好地获得所有值,但无论何时数据升级,都无法升级存储在StringBuilder中的值.StringBuilder显示数据库的第一个数据。
private void showData(Cursor cursor) {
StringBuilder stbuilder = new StringBuilder();
while(cursor.moveToNext())
{
start_time = cursor.getString(1);
end_time = cursor.getString(2);
duration_time = cursor.getString(3);
phone_option = cursor.getString(4);
phone_mode = cursor.getString(5);
stbuilder.append(start_time+" "+end_time+" "+duration_time+" "+phone_option+" "+phone_mode);
Log.i("STARTtttDB", ""+start_time);
Log.i("enddddDB", ""+end_time);
Log.i("duratonnn", ""+duration_time);
Log.i("OpTIONnnnn",""+phone_option);
Log.i("M O D E ",""+phone_mode);
String data=stbuilder.toString();
Log.i("Data OUtput",data);
}
答案 0 :(得分:1)
您需要通过调用setLength(0);
来重置StringBuilderwhile(cursor.moveToNext())
{
stBuilder.setLength(0);
.....
}
答案 1 :(得分:1)
您应该为每次迭代创建一个新的StringBuilder ,或者使用以下命令重置它:
stBuilder.setLength(0)
。
此外,不是在StringBuilder.append()内部使用字符串连接(+
),而是你应该有一系列追加:
stBuilder.append(start_time);
stBuilder.append(" ");
stBuilder.append(end_time);
...
另请注意,您可以安全地放弃使用StringBuilder ,因为编译器无论如何都会使用StringBuilder优化字符串连接。这是我找到的performance study。