设为首页 收藏本站 662p开源网
开启辅助访问 切换到宽版

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

切换风格 立即注册 找回密码

安卓教程网

查看: 217853|回复: 10

【SQLite数据库】

[复制链接]
发表于 2015-10-9 09:44:18 | 显示全部楼层 |阅读模式
更多
项目源码下载
SQLite数据库
  • 轻量级关系型数据库
  • 创建数据库需要使用的api:SQLiteOpenHelper
    • 必须定义一个构造方法:
      //arg1:数据库文件的名字//arg2:游标工厂//arg3:数据库版本public MyOpenHelper(Context context, String name, CursorFactory factory, int version){}
    • 数据库被创建时会调用:onCreate方法
    • 数据库升级时会调用:onUpgrade方法

创建数据库    //创建OpenHelper对象    MyOpenHelper oh = new MyOpenHelper(getContext(), "person.db", null, 1);    //获得数据库对象,如果数据库不存在,先创建数据库,后获得,如果存在,则直接获得    SQLiteDatabase db = oh.getWritableDatabase();* getWritableDatabase():打开可读写的数据库* getReadableDatabase():在磁盘空间不足时打开只读数据库,否则打开可读写数据库* 在创建数据库时创建表        public void onCreate(SQLiteDatabase db) {            // TODO Auto-generated method stub            db.execSQL("create table person (_id integer primary key autoincrement, name char(10), phone char(20), money integer(20))");        }
数据库的增删改查SQL语句* insert into person (name, phone, money) values ('张三', '159874611', 2000);* delete from person where name = '李四' and _id = 4;* update person set money = 6000 where name = '李四';* select name, phone from person where name = '张三';执行SQL语句实现增删改查        //插入        db.execSQL("insert into person (name, phone, money) values (?, ?, ?);", new Object[]{"张三", 15987461, 75000});        //查找        Cursor cs = db.rawQuery("select _id, name, money from person where name = ?;", new String[]{"张三"});* 测试方法执行前会调用此方法        protected void setUp() throws Exception {            super.setUp();            //                  获取虚拟上下文对象            oh = new MyOpenHelper(getContext(), "people.db", null, 1);        }使用api实现增删改查
  • 插入
        //以键值对的形式保存要存入数据库的数据        ContentValues cv = new ContentValues();        cv.put("name", "刘能");        cv.put("phone", 1651646);        cv.put("money", 3500);        //返回值是改行的主键,如果出错返回-1        long i = db.insert("person", null, cv);
  • 删除
        //返回值是删除的行数        int i = db.delete("person", "_id = ? and name = ?", new String[]{"1", "张三"});
  • 修改
        ContentValues cv = new ContentValues();        cv.put("money", 25000);        int i = db.update("person", cv, "name = ?", new String[]{"赵四"});
  • 查询
        //arg1:要查询的字段        //arg2:查询条件        //arg3:填充查询条件的占位符        Cursor cs = db.query("person", new String[]{"name", "money"}, "name = ?", new String[]{"张三"}, null, null, null);        while(cs.moveToNext()){            //                          获取指定列的索引值            String name = cs.getString(cs.getColumnIndex("name"));            String money = cs.getString(cs.getColumnIndex("money"));            System.out.println(name + ";" + money);        }事务
  • 保证多条SQL语句要么同时成功,要么同时失败
  • 最常见案例:银行转账
  • 事务api
        try {            //开启事务            db.beginTransaction();            ...........            //设置事务执行成功            db.setTransactionSuccessful();        } finally{            //关闭事务            //如果此时已经设置事务执行成功,则sql语句生效,否则不生效            db.endTransaction();        }把数据库的数据显示至屏幕
  • 任意插入一些数据
    • 定义业务bean:Person.java
    • 读取数据库的所有数据
        Cursor cs = db.query("person", null, null, null, null, null, null);        while(cs.moveToNext()){            String name = cs.getString(cs.getColumnIndex("name"));            String phone = cs.getString(cs.getColumnIndex("phone"));            String money = cs.getString(cs.getColumnIndex("money"));            //把读到的数据封装至Person对象            Person p = new Person(name, phone, money);            //把person对象保存至集合中            people.add(p);        }
  • 把集合中的数据显示至屏幕
         LinearLayout ll = (LinearLayout) findViewById(R.id.ll);         for(Person p : people){             //创建TextView,每条数据用一个文本框显示             TextView tv = new TextView(this);             tv.setText(p.toString());             //把文本框设置为ll的子节点             ll.addView(tv);         }
  • 分页查询
        Cursor cs = db.query("person", null, null, null, null, null, null, "0, 10");

  
发表于 2015-10-9 09:45:26 | 显示全部楼层
LZ敢整点更有创意的不?兄弟们等着围观捏~
发表于 2015-10-14 23:59:06 | 显示全部楼层
前排支持下了哦~
发表于 2015-10-27 23:59:23 | 显示全部楼层
看起来好像不错的样子
发表于 2015-11-1 05:26:12 | 显示全部楼层
看看吧
发表于 2015-11-4 07:57:11 | 显示全部楼层
先抢到先,坐到位,呵呵

新浪微博达人勋

高级会员

942

积分

314

威望

0

金钱

Rank: 4

积分
942
发表于 2015-11-6 15:48:57 | 显示全部楼层
广告位,,坐下看看

新浪微博达人勋

高级会员

822

积分

274

威望

0

金钱

Rank: 4

积分
822
发表于 2015-11-7 05:41:47 | 显示全部楼层
有空一起交流一下
发表于 2015-11-23 16:41:14 | 显示全部楼层
支持,赞一个

新浪微博达人勋

高级会员

1847

积分

616

威望

0

金钱

Rank: 6Rank: 6

积分
1847
发表于 2015-12-3 06:40:26 | 显示全部楼层
LZ敢整点更有创意的不?兄弟们等着围观捏~
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Archiver|手机版|小黑屋|安卓教程网 ( 粤ICP备12089784号  

GMT+8, 2019-10-14 08:35 , Processed in 0.774219 second(s), 58 queries .

Powered by Discuz X3.1

© 2001-2013 IOS教程网

快速回复 返回顶部 返回列表