当前位置:Gxlcms > 数据库问题 > 03-数据库

03-数据库

时间:2021-07-01 10:21:17 帮助过:80人阅读

注意:
sqlite数据库是一个嵌入式轻量级的数据库,内部不区分数据类型的,不对数据的长度校验。

数据库的增删改查

复习sql语法:
* 增
insert into info (name,phone) values (‘zhangsan‘,‘110‘)
* 删
delete from info where name = ‘zhangsa2n‘
* 改
update info set phone=‘13512345678‘ where name=‘zhangsan‘
* 查
select name,phone from info

数据库文件是在 /data/data/包名/databases/xxx.db

利用sqlite3工具查看数据库的内容

sqlite3 xxx.db

如果出现中文乱码 需要修改cmd的编码集
65001 utf-8

chcp 65001 更改cmd窗口的编码,默认是gb2312 

细节

获取可写数据库 

        synchronized (this) {
                return getDatabaseLocked(true);
            }

获取只读数据库

        synchronized (this) {
            return getDatabaseLocked(false);
        }

可读、可写数据库返回的是同一个数据库的实例,

区别就是:操作数据库的时候是否加锁。

两种数据库增删改查方式的优缺点

  1. 直接利用sql语句增删改查

    优点:非常的灵活,多表查询,级联查询。
    缺点:代码容易出错,方法没有返回值。

  2. 利用google包装的api 执行增删改查

    优点: 代码不容易出错,写起来简单,方法有返回值
    缺点: 不容易多表查询。复杂表的操作,视图都无法实现。

数据显示(listview)

需求: 把数据库的内容全部显示在界面上

MVC
m: model 数据模型 -- Person 
v: view 视图 -- ListView
c: controller 控制器 --Adapter 数据适配器

listview使用的步骤

  1. 定义布局文件 xml声明 ListView节点
  2. 找到listview
  3. 设置数据适配器
  4. 实现getCount() 返回有多少个条目
  5. 实现getView() 返回每个位置显示的内容view对象。
  6. 优化listview 复用 convertView

常见数据适配器

  • SimpleAdapter
  • ArrayAdapter

数据库的事务

什么是数据库的事务
保证一个操作要么同时成功,要么同时失败

    db.beginTransaction();
    try {
        ...
        db.setTransactionSuccessful();
    } catch (Exception e) {
        Toast.makeText(this, "产生异常,事务回滚", 0).show();
    } finally {
        db.endTransaction();
    }

案例:

张三给李四汇款
1. 张三 account - 1000
2. 李四 account + 1000

如何把私有的数据暴露出来(内容提供者)

理解原理






03-数据库

标签:

人气教程排行