android sqllite query()查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android sqllite query()查询相关的知识,希望对你有一定的参考价值。

db.query(ZGXDBhelper.ZGX_CUSTOMER_TABLE, null, "userid=?",
new String[] userid , "mtype", null, "actiontime asc"); 请问这条查询语句的结果大概是什么,mtype 是数据类型,才、actiontime 是数据上传时间

参考技术A public Cursor query (String table, String[] columns, String selection, String[] selectionArgs,String groupBy, String having,String orderBy,String limit)参数如下:
table:表名。相当于select语句from关键字后面的部分。如果是多表联合查询,可以用逗号将两个表名分开。
columns:要查询出来的列名。相当于select语句select关键字后面的部分。
selection:查询条件子句,相当于select语句where关键字后面的部分,在条件子句允许使用占位符“?”
selectionArgs:对应于selection语句中占位符的值,值在数组中的位置与占位符在语句中的位置必须一致,否则就会有异常。
groupBy:相当于select语句group by关键字后面的部分
having:相当于select语句having关键字后面的部分
orderBy:相当于select语句order by关键字后面的部分,如:personid desc, age asc;
limit:指定偏移量和获取的记录数,相当于select语句limit关键字后面的部分。追问

谢谢,但我还是不怎么明白。比我现在我有这样一张表:

查询:userid =4 的所有数据类型(type)同一类型有多条记录的,只取最近一条记录,请问怎么写查询语句?,

追答

你这个时间格式都不统一,要比较肯定要格式一样呀,都写成hour:minute格式吧,我给你提供个思路:遍历查询到的cursor,然后将时间类型去掉”:“后转换为整形比较大小即可

本回答被提问者采纳
参考技术B 查询出的是ZGXDBhelper.ZGX_CUSTOMER_TABLE这个表中所有的数据列,条件是userid 为你传过去的userid , 查询结果以mtype分组, 按actiontime asc 倒序排列追问

谢谢,你让我明白了问题所在,同样的,我还是不太清楚我的问题怎么解决,具体问题麻烦请看看我给@纪念_末班车 的回复,求指点

Android 利用xUtils框架实现对sqllite的增删改查

首先下载xUtils,下载地址:https://github.com/wyouflf/xUtils  把下载好的文件压缩,把里面的jar包拷进项目中如图所示:

技术分享

这里新建一个User类进行测试增删改查

package com.example.xutilsdemo;

public class User {
    private int id;
    private String name;
    private String email;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public User(String name, String email) {
        this.name = name;
        this.email = email;
    }
    public User(){
        
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", email=" + email + "]";
    }
     
}

核心代码:

package com.example.xutilsdemo;

import java.util.List;

import com.lidroid.xutils.DbUtils;
import com.lidroid.xutils.db.sqlite.Selector;
import com.lidroid.xutils.db.sqlite.WhereBuilder;
import com.lidroid.xutils.exception.DbException;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

    //直接使用Dbutils,如果不能使用这个类,说明包没有导入成功
    DbUtils db ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //创建数据库,名称为mydb
        db= DbUtils.create(this,"mydb");
    }

    //保存数据事件
    public void saveClick(View v){
        DbUtils db = DbUtils.create(this,"mydb");
        User user = new User("hyy","[email protected]"); //这里需要注意的是User对象必须有id属性,或者有通过@ID注解的属性
        try {
            db.save(user);
            Toast.makeText(this, "ok",Toast.LENGTH_SHORT).show();
        } catch (DbException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        } // 使用saveBindingId保存实体时会为实体的id赋值
    }
    
    //查询数据事件
    public void queryClick(View v){
        try {
            List<User> list=db.findAll(User.class);
            for (User user : list) {
                System.out.println(user);
            }
        } catch (DbException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
    }
    
    //根据条件查询事件
    public void queryByClick(View v){
        try {
            User user=db.findFirst(Selector.from(User.class).where("name","=","hyy"));
            Toast.makeText(this,user.toString(), Toast.LENGTH_SHORT).show();
        } catch (DbException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
    }
    
    //更新数据事件
    public void updateClick(View v){
        User user=new User();
        user.setId(1);
        user.setName("huyuan");
        user.setEmail("[email protected]");
        
        try {
            db.update(user,"name","email");
        } catch (DbException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
    }
    //删除事件
    public void deleteClick(View v){
        try {
            db.delete(User.class,WhereBuilder.b("id", "=", "1"));
        } catch (DbException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
    }
}

 

以上是关于android sqllite query()查询的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中使用sqllite

SQLlite实现增删查改

android之SQLlite操作

Android sqllite 问题

Android jetpack room SQLLite 数据库 修改字段

Android菜鸟成长记5-ADB和sqllite