【问题标题】:String buffer repeats values when used in a loop, Android字符串缓冲区在循环中使用时重复值,Android
【发布时间】:2018-12-25 14:35:37
【问题描述】:

我正在使用字符串缓冲区来读取以存储从 SQLite 数据库读取的值。在循环内部,缓冲区总是从第一个数据库引用开始读取。

例如:数据库有值 apple,orange,banana。

每次调用函数时,字符串缓冲区都会从头开始存储项目:

第一个函数调用:apple

第二个函数调用:apple apple orange

第三个函数调用:apple apple orange apple orangebanana

在第三次通话中,我只需要:苹果橙香蕉

我该怎么做?

public void db{

Cursor res= databaseHelper.getAllData();
if(res!=null){
    res.moveToFirst();
    try{
    while(res.moveToNext())
    {
        if(res.getString(0)!=null){
        stringBuffer.append(res.getString(0)+"\n");
        Log.i("TAG",stringBuffer.toString());
        stringBuffer1.append(res.getString(1)+"\n");
        stringBuffer2.append(res.getString(2)+"\n");

        stringBuffer.setLength(0);
        stringBuffer1.setLength(0);
        stringBuffer2.setLength(0);

    }catch(Exception e){}}}

【问题讨论】:

  • 有什么有用的吗?

标签: android database sqlite cursor stringbuffer


【解决方案1】:

只需将StringBuffer stringBuffer = new StringBuffer(""); 放在public void db{ 之后
或在开始循环之前通过stringBuffer.delete(0, stringBuffer.length()); 清除stringBuffer
我不知道您在哪里声明了 stringBuffer,但它保留了以前的值。
你也可能会丢失 db 中的第一项,因为你这样做了 moveFirst 并立即 moveNext,所以删除 moveFirst

【讨论】:

    【解决方案2】:
    int i =0; 
    if (cursor.moveToFirst()){ 
    do{
     stringBuffer.append.(cursor.getString (i)); 
    i++; 
    }
    while(cursor.moveToNext());
     }
     cursor.close(); 
    }
    

    试试这个而不是那个,这可能对你有帮助。

    【讨论】:

      【解决方案3】:

      如果你只需要打印"apple orange banana",那么使用如下

      public void db(){
          Cursor res = databaseHelper.getAllData();
          if (res != null) {
              while (res.moveToNext()) {
                  String value = res.getString(0) + " ";
                  stringBuffer.append(value);
                  Log.d(TAG, stringBuffer.toString())
                  ...
              }
              res.close()
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-29
        • 1970-01-01
        • 2012-04-27
        • 1970-01-01
        • 1970-01-01
        • 2011-01-15
        • 2015-01-19
        • 1970-01-01
        相关资源
        最近更新 更多