【问题标题】:Retrieve a date from sqlite database in android studio从 android studio 中的 sqlite 数据库中检索日期
【发布时间】:2015-05-27 23:27:22
【问题描述】:

我使用以下代码创建了一个数据库

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBclass extends SQLiteOpenHelper
{
private static final String DB_NAME="Camera";
private static final String TABLE_NAME="Cam";

public DBclass(Context context)
{
    super(context, DB_NAME, null, 1);

}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
}
//table creation
public void onCreate(SQLiteDatabase db)
{
    db.execSQL("CREATE TABLE IF NOT EXISTS " +
            TABLE_NAME +
            " (date Number, time Number, comments Varchar,image blob);");
}
}

还有这个保存数据的功能:

public void store(View view)
{
    byte[] img=bitmapToByte(photo);
    String DATE,TIME,COMMENTS;
    DATE=date.getText().toString();
    TIME=time.getText().toString();
    COMMENTS=comments.getText().toString();
    ContentValues values=new ContentValues();
    values.put("date",DATE);
    values.put("time",TIME);
    values.put("comments",COMMENTS);
    values.put("image",img);

    test.getWritableDatabase();
    test.getWritableDatabase().insert("cam", "date", values);
}

这个用于检索

String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
List<String> commentList = new ArrayList<String>();
DBclass db=new DBclass(getApplicationContext());
Cursor cursor;

cursor = db.rawQuery("SELECT comments FROM Cam WHERE date = ?", new String(date));

if (cursor.moveToFirst()) {
    do {
                        commentList.add(cursor.getString(0));
                    }while(cursor.moveToNext());
                }

                comm.setText(commentList.toString());
            }

数据保存完成。当前系统日期保存在“日期”列中。要求是从数据库中检索“日期”,检查它是否等于系统日期,如果是,则在 Textview 中显示相应的“cmets”。

如何从数据库中检索“日期”?

【问题讨论】:

  • 我开始学习android...请帮助
  • 现在编译器无法解析 rawQuery 方法...请帮忙

标签: android sqlite android-studio


【解决方案1】:
public String getAllCommentsByDate(long date){
    List<String> commentList = new ArrayList<String>();

    String selectQuery = "SELECT comments FROM " + TABLE_NAME + " WHERE date = " + String.valueOf(date);

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    if (cursor.moveToFirst()){
        do{
            commentList.add(cursor.getString(0))
        }while(cursor.moveToNext());
    }
    return commentList;
}

我不知道你的日期是什么格式。因此,此示例对特定日期时间使用 long 值。您应该根据您的需要适当地修改它。

【讨论】:

  • 我正在尝试您的逻辑,但有一个小问题。编译器无法解析 db.rawQuery 方法。可能是什么因素?我为我的 Database 类创建了 db 对象并调用了 getWritableDatabase 方法
  • 您能否提供有关该错误的更多信息?对我来说,这很好用。此方法应位于从 SqliteOpenHelper 扩展的类中,而 rawQuery 方法来自 SqliteDatabase 对象。
  • "cursor = db.rawQuery("SELECT cmets FROM Cam WHERE date = ?", new String(date)); "这是错误语句。 db 是导入了 SqliteOpenHelper 的数据库类的对象。错误状态“无法解析方法 rawQuery”
  • 我已经尝试将 rawQuery 的第二个参数设置为 null,就像您的代码中一样。这也太有用了。
  • 我找到了一些东西。我无法调用其他函数,如 execSQL()。但是我可以调用 getWritableDatabase。可能是什么问题呢 ?请帮忙
猜你喜欢
  • 2020-04-10
  • 2013-09-12
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 2011-09-09
相关资源
最近更新 更多