• 查询数据及使用Cursor对象


    使用SQLiteDatabase 对象查询数据表中的数据,需要用到SQL的SELECT语句。

    SELECT语句的基本语法如下:

    SELECT  字段名     FROM  数据表名称

    “字段名”的部分可列出数据表中的一个或多个字段(以逗号分隔),或是用‘*’代表“所有字段“。

    例如:

    SELECT  *     FROM  test   //直接用 * 代表所有字段
    SELECT name,phone,email  FROM test

    使用Cursor对象获取查询结果

      要执行查询,需要用到SQLiteDatabase 对象的rawQuery()方法,第1个参数为SELECT语句,第2个参数设为null即可:

    rawQuery("SELECT *  FROM  test",null);  //返回test数据表的所有记录

    rawQuery()方法返回的查询结果为Cursor类的对象。Cursor可称为”数据指针“,要读取查询结果中某一个记录,就必须将Cursor指标指到它,之后才能读取其内容。

    moveToFirst() 移到第一个记录 moveToLast() 移到最后一个记录
    moveToNext() 移到下一个记录 moveToPrevious() 移到前一个记录
    Cursor cur = db.rawQuery("SELECT  *   FROM  test");//执行查询
    if(cur.moveToFirst())   //查询结果中有数据才继续
        do{               //利用do/while循环逐个读取//读取指针所指的数据
    }while(cur.moveToNext());  //若还有下一个记录,就继续do/while循环
    public class MainActivity extends ActionBarActivity {
        static final String db_name = "testDB";  //数据库名称
        static final String tb_name = "test";   // 数据表名称
        SQLiteDatabase db; //数据库对象
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //打开或创建数据库
            db = openOrCreateDatabase(db_name, Context.MODE_PRIVATE,null);
            String createTable = "CREATE TABLE IF NOT EXISTS " +
                    tb_name +
                    "(name VARCHAR(32)," +
                    "phone VARCHAR(16)," +
                    "email VARCHAR(64))";
            db.execSQL(createTable);        //创建数据表
    
            Cursor c = db.rawQuery("SELECT  *  FROM "+tb_name,null);//查询tb_name数据表中的所有数据
    
            if(c.getCount()==0){          //若无数据,则立即新增两项数据
                addData("Flag Publishing Co.","6666666","service@flag.com.tw");
                addData("PCDIY Magazine","7777777","service@flag.com.tw");
                c=db.rawQuery("SELECT  *  FROM "+tb_name,null);//重新查询
            }
    
            if (c.moveToFirst()) {         //移到第1项数据(若有数据才继续)
                String str = "总共有  "+c.getCount()+"项数据
    ";
                str+="-------
    ";
    
                do {              //逐项读出数据,并串接成信息字符串
                    str+="name:"+c.getString(0)+"
    ";
                    str+="phone:"+c.getString(1)+"
    ";
                    str+="email:"+c.getString(2)+"
    ";
                    str+="------
    ";
                }while(c.moveToNext());   //有下一项就继续循环
                TextView txv = (TextView) findViewById(R.id.txv);
                txv.setText(str);   //显示信息字符串
            }
            db.close();  //关闭数据库
        }
    
        private void addData(String name,String phone,String email) {
            ContentValues cv = new ContentValues(3);  //创建含3个数据项的对象
    
            cv.put("name", name);
            cv.put("phone",phone);
            cv.put("email", email);
    
            db.insert(tb_name, null, cv);    //将数据加到数据表
        }
    
    }
  • 相关阅读:
    Hibernate框架简介
    [leecode]Evaluate Reverse Polish Notation
    linux 服务器之间配置免密登录
    大数据学习系列之一 ----- Hadoop环境搭建(单机)
    Hadoop hbase集群断电数据块被破坏无法启动
    CentOS 6 上安装 pip、setuptools
    CentOs6.7 python2.6升级到2.7.11
    安装phantomjs(Ubuntu版本 MacOS版本)
    Linux/Centos下安装部署phantomjs 及使用
    linux 查看系统磁盘、内存大小
  • 原文地址:https://www.cnblogs.com/lan-xin/p/8472747.html
Copyright © 2020-2023  润新知