数据库
- mysql
- sqlserver
- SQLite(轻量级,嵌入式的数据库)
大量的相似结构的数据的储存,快速的查询。
特殊的文件(按照一定的格式生成)
数据库的创建
创建文件
1.声明文件对象,文件是不会被创建出来的。
File file = new File("文件名称");
2.写文件(文件才会被创建出来)
FileOutputStream fos = new FileOutputStream(file);
fos.write("hdahfdsaklfh".getbytes());
创建数据库
1.实现SQLiteOpenHelper的子类
2.getWritableDatabase/getReadableDatabase()
3.onCreate() 数据库第一次创建的执行的方法,适合做数据库表结构的初始化
注意:
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);
}
可读、可写数据库返回的是同一个数据库的实例,
区别就是:操作数据库的时候是否加锁。
两种数据库增删改查方式的优缺点
- 直接利用sql语句增删改查
优点:非常的灵活,多表查询,级联查询。
缺点:代码容易出错,方法没有返回值。 - 利用google包装的api 执行增删改查
优点: 代码不容易出错,写起来简单,方法有返回值
缺点: 不容易多表查询。复杂表的操作,视图都无法实现。
数据显示(listview)
需求: 把数据库的内容全部显示在界面上
MVC
m: model 数据模型 -- Person
v: view 视图 -- ListView
c: controller 控制器 --Adapter 数据适配器
listview使用的步骤
- 定义布局文件 xml声明 ListView节点
- 找到listview
- 设置数据适配器
- 实现getCount() 返回有多少个条目
- 实现getView() 返回每个位置显示的内容view对象。
- 优化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
如何把私有的数据暴露出来(内容提供者)
理解原理
时间: 2024-10-07 15:22:30