【问题标题】:Sqlite how to get string items using cursorSqlite如何使用游标获取字符串项
【发布时间】:2022-01-06 12:27:13
【问题描述】:
public Cursor getImages(long rowId) throws SQLException
{
    Cursor mCursor =
            db.rawQuery("select * from Pictures WHERE id=" + rowId + ";", null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;
}

表格列“id、pic、comment”

我想将图片和评论的值放入字符串数组。

我的代码是:

int i=0;
Cursor c1 = db.getImages(memberId);     
c1.moveToFirst();
while(c1.isLast()){
    pictures[i]=c1.getString(1);
    comments[i]=c1.getString(2);
    i++;
}

这不起作用。

【问题讨论】:

    标签: android string sqlite android-cursor


    【解决方案1】:

    你应该这样做:

    c1.getString(cursor.getColumnIndex("pic"));

    c1.getString(cursor.getColumnIndex("comment"));

    【讨论】:

      【解决方案2】:

      我就是这样做的

      我更喜欢

      getColumnIndex()

      而不是数字。

      if(cursor.moveToFirst()){
          do{
                String varaible1 = cursor.getString(cursor.getColumnIndex("column_name1"));
                String varaible2 = cursor.getString(cursor.getColumnIndex("column_name2"));
      
             }while (cursor.moveToNext());
      }
      cursor.close();
      

      始终使用列名而不是位置,因为列位置可以更改。

      当然,列名也可以更改,但假设您添加了一个新列并且它位于第 1 列和第 2 列之间。 如果您使用数字,则需要更改您的代码。 但是如果你使用名字,你会没事的。

      如果你有 40 列,它更具可读性,会发生什么?(

      【讨论】:

      • 总是使用列名而不是位置,因为列位置可以改变。两者的性能有区别吗?
      • @DragonFire 我相信位置更快
      【解决方案3】:

      只需在循环中使用 moveToNext 即可进行迭代。

      while(ct.moveToNext()){
           pictures[i]=c1.getString(1);
           comments[i]=c1.getString(2);
           i++;
      }
      

      【讨论】:

        【解决方案4】:

        而你应该做的是替换

        c1.moveToFirst();
        while(c1.isLast()){
             //your code
        }
        

        //c1.moveToFirst();
        while(c1.moveToNext()){
             //your code
        }
        

        【讨论】:

          【解决方案5】:
          Cursor c = db.rawQuery("select username from user_information where username ='" + username_txt.getText() + "'", null);
          c.moveToFirst();
          if (c.moveToFirst()) {
              username = c.getString(c.getColumnIndex("username"));
          }
          

          使用这个。希望对你有帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-03-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-05-20
            • 1970-01-01
            相关资源
            最近更新 更多