从SQLite数据库中读取问题

时间:2012-05-27 08:56:45

标签: android database sqlite

我没有太多的知识使用“光标”来读取SQLite数据库的数据但是使用了一些参考和示例我编译了一些来设置这个我不知道为什么它会从数据库读取,我检查是否输入了数据使用数据库浏览器的数据库及其现在可以告诉我如何使这个工作吗?

我有一个单独的类来保存数据库连接和查询,因为我有一个函数来获取所有具有指定值的长值的字段

public Cursor getAppointments(long date) throws SQLException
    {
    Cursor mCursor =
    db.query(true, DATABASE_TABLE, new String[] {
    KEY_ROWID,
    APP_TIME,
    APP_TITLE,
    },
    APP_DATE + "="  + date,
    null,
    null,
    null,
    null,
    null);
    if (mCursor != null) {
    mCursor.moveToFirst();
        }
    return mCursor;
    }

这段代码应该做的是获取所有具有相应日期作为查询值的记录并返回。

现在在主类中,我有这个代码来逐行捕获并显示在Textview中。

 db.open();
       Display.setText("");
       Cursor c = db.getAppointments(SDate);

      if (c.moveToFirst())
          Display.setText(DisplayTitle(c));
       else
       Toast.makeText(this, "No title found",
       Toast.LENGTH_LONG).show();

       db.close();

,显示标题方法是

private String DisplayTitle(Cursor c) {

        String Final ="";

        Final = c.getString(1)  + " " +c.getString(2) + " " +  c.getString(3)  + "\n" ;

        return Final;

    }

有人可以告诉我为了检索与日期具有相同长值并且在文本视图中显示它的记录所需的更改,可能有多个具有相同长值的记录,因此必须检索所有日期具有相同长值的记录,并在textview中显示。

干杯,请求快速回复。 :)

2 个答案:

答案 0 :(得分:2)

使用这种使用游标的简单方法:

 String q = "SELECT * FROM DATABASE_TABLE where(APP_DATE like '"+date+"')";//your query
 Cursor c = db.rawQuery(q, null); //  db is a object of SQLiteDatabase type  

如果您不确定列索引,请使用 getColumnIndex()方法使用列名检索相应列的值:

              if(c.getCount() == 0)
              {                   
                 //No entry found
              }
              else  {
                  c.moveToFirst();
                  do {
                      String mail = c.getString(c.getColumnIndex("KEY_ROWID"))+c.getString(c.getColumnIndex("APP_TIME"))+c.getString(c.getColumnIndex("APP_TITLE")); 
                        // do whatever you like with each record                    
                    } while (c.moveToNext());               
            c.close();
            db.close();

答案 1 :(得分:0)

您已开始在DisplayTitle方法中从索引1读取光标。它应该是0.分别表示c.getString(0)和