android SQLite中数据库查询,如何查询一段时间内的记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android SQLite中数据库查询,如何查询一段时间内的记录相关的知识,希望对你有一定的参考价值。

求解:android SQLite中数据库查询,如何查询一段时间内的记录问题描述:写一个记录用户锻炼身体的软件,可以记录当天日期,一次跑步的时间,跑步的距离等。现根据记录的日志查询,比如说查询 2013-1-20 号 (时间在SQLitez中保存为 text 类型) 这样通过 where data like '2013-1-20 ' 查询到指定日期的记录,现要求 查询一天,查询一周内,查询一月内的记录,因为时间为text类型,要查询一段时间内的记录,无法用时间进行比较怎么查? 比如当天为:2013-1-20 号,点击查询一周内的记录 (另外每天有多条运动记录,也无法用 总记录- 某一条记录的id 来推算啊,因为当天记录有多条,记录的id也会有多个的 ) 怎么查询出一周时间内,而不是一天的所有记录呢? 求解答....

参考技术A SELECT * from TABLE_NAME t where jolianday(‘now’)-jolianday(t.time)>7你试试这条SQL可以吗 参考技术B 我已经解决这个问题,但不知道你数据库是怎么样的!
我的语句很简单
只用select * from 表名 time where >? and where <? 就可以实现了!
参考技术C 你存那个long型的时间啊,或者存成int型啊 比如20130201 这样不是也可以比较大小么

如何在android中使用游标(sqlite查询)搜索数据库

我是一个Android初学者。我正在尝试设计这个简单的应用程序,它使用editText视图从用户获取城市名称,比较数据库中的城市名称,并返回该城市的邮政编码。现在,我遇到了游标实现的问题。请帮忙。如何查询数据库以获取相应的代码。

        EditText city;
    Button add,show1;
    RadioGroup choose;
    String k;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        try
        {   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //final ContentValues values = new ContentValues();
        city=(EditText)findViewById(R.id.editText1);
        add=(Button)findViewById(R.id.add);
        choose=(RadioGroup)findViewById(R.id.radio01);
        show1=(Button)findViewById(R.id.button1);
        k=city.getText().toString();
        createDatabase();
    }
        catch(Exception e)
        {

        }


show1.setOnClickListener(new View.OnClickListener() {


    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        db=openOrCreateDatabase(DATABASE_NAME,Context.MODE_PRIVATE,null);
        try{

        if(k == "CITY")
        {
            String[] result_columns=new String[]{"_id","CITY","CODE"};
            Cursor cursor = db.query(TABLE_NAME, result_columns, 
                    "CITY" +"=?", new String[]{"k"}, null, null, null);

    cursor.moveToFirst();

        String xnewcode=cursor.getString(0);
        Toast.makeText(activity1.this, xnewcode, Toast.LENGTH_LONG).show();
        cursor.moveToNext();

            //db.close();
        }}
        catch(Exception e)
        {
            Toast.makeText(activity1.this,"Fault in showing " + e,Toast.LENGTH_LONG).show();

        }

    }

});
答案
 Cursor   mCursor = db.rawQuery("select ZIPCODE from TABLENAME where CITYNAME= ? ", new String[]{"NEWYORK"});

希望你只得到单一的结果。

然后从(字符串意味着)mCursor.getString(coloumn_id)得到它

另一答案

我想你忘记了循环结果

String[] result_columns=new String[]{"_id","CITY","CODE"};
        Cursor cursor = db.query(TABLE_NAME, result_columns, 
                "CITY" +"=?", new String[]{"k"}, null, null, null);

do {

                        String xnewcode = cursor.getString(0);
                        System.ouot.println("...display the result..."+xnewcode);
                    }while (cursor.moveToNext());
                    }

看看Sample project

要么

关于sqlite database for android的教程

谢谢迪帕克

另一答案

我想你已经忘记了一些检查。但是,它实际上取决于编写城市的语言 - SQLite运算符“LIKE”仅对英文字母不区分大小写。如果您的城市使用其他语言,请考虑将它们以大写/小写形式存储在数据库中,并将输入字符串转换为java(String.toUpper / LowerCase())中的大写/小写。

String[] result_columns=new String[]{"_id","CITY","CODE"};
        Cursor cursor = db.query(TABLE_NAME, result_columns, 
                "CITY" +" like '%?%'", new String[]{"k"}, null, null, null);

if(cursor != null)
{
  while(cursor.moveToNext())
  {
    String xnewcode=cursor.getString(1);
    Toast.makeText(activity1.this, xnewcode, Toast.LENGTH_LONG).show();
  }
}

您可以将所有结果存储在一个数组中,并将其显示给用户,要求他选择正确的结果。

编辑:如果您不熟悉,“x LIKE Y”语句将x与Y中任何子字符串进行比较,长度为x = length。这非常有用,因为您无法保证用户将输入整个城市名称。因此,如果用户输入“york”,我的示例中,Cursor将返回“new york”,“yorkshire”,“york”等值。

另一答案
Cursor cursor = db.rawQuery("select _id,city,code 
      FROM city where city_name like '"+s+"%' order by city", null);

s是搜索框中输入字符的字符串

使用下面的链接它在Android应用程序开发中非常有用。

http://samir-mangroliya.blogspot.in/2012/05/android-sectioned-listview-with-search_6865.html

以上是关于android SQLite中数据库查询,如何查询一段时间内的记录的主要内容,如果未能解决你的问题,请参考以下文章

如何使用内容提供程序在 Sqlite 数据库中查询 Android 中的时间戳列?

如何在android中使用游标(sqlite查询)搜索数据库

如何找出在 Android 中发送到 SQLite 的查询?

如何在 SQLite 查询中忽略重音(Android)

如何将 SQLite 数据库(SQLite Firefox 扩展)连接到 Android 应用程序,以便 android 2.1 查询并插入数据库

如何使用 SQLite 在 Android 中获取查询的行数?