03-数据库

数据库

  • 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);
        }

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

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

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

  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

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

理解原理

时间: 2024-10-07 15:22:30

03-数据库的相关文章

C/C++笔试忍法帖03——数据库篇

1.存储过程是什么?有什么用?有什么优点? 存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它. 存储过程用于实现频繁使用的查询.业务规则.被其他过程使用的公共例行程序. 存储过程在创建时即在服务器上进行编译,所以执行起来比单个 SQL 语句快. 2.一般数据库若出现日志满了,会出现什么情况,是否还能使用? 答:只能执行查询等读操作,不能执行更改,备份等写操作,原因是任

Java开发工程师(Web方向) - 03.数据库开发 - 第1章.JDBC

第1章--JDBC JDBC基础 通过Java Database Connectivity可以实现Java程序对后端数据库的访问 一个完整的数据库部署架构,通常是由客户端和服务器端两部分组成 客户端封装数据库请求,并发送给服务器端,服务器端执行完毕后将结果返回给客户端 常见客户端工具: MySQL Workbench(图形化工具操作简单,但只能实现简单的查询) JDBC(驱动程序jar包) 命令行工具(直接敲入SQL语句进行查询) 市面上多种数据库不尽相同,学习成本高,数据库迁移的移植性 --

EF Code First教程-03 数据库迁移Migrator

要在nuget 程序包管理控制台中输入命令 基本命令 Enable-Migrations   //打开数据库迁移 Add-Migration AddBlogUrl    //新增一个数据库迁移版本   AddBlogUrl是要新增版本名称,这个名称必须是唯一的,不能重复 Update-Database  //更新数据库 Update-Database –TargetMigration: 版本名称  //迁移到特定版本(回滚) 详细内容请看:http://www.cnblogs.com/inday

Java开发工程师(Web方向) - 03.数据库开发 - 期末考试

期末考试 编程题 本编程题包含4个小题,覆盖知识点从基础的JDBC.连接池到MyBatis. 1(10分) 有一款在线教育产品"天天向上"主要实现了在手机上查看课程表的功能.该产品的后端系统有一张保存了所有客户课程信息的数据库表,表结构如下: 请使用JDBC编写一段程序,实现读取用户名为"ZhangSan"的同学的所有课程名称,输出到控制台终端. 答: 数据库: /usr/local/mysql/bin ./mysql -u root -p mysql> CR

Java开发工程师(Web方向) - 03.数据库开发 - 第4章.事务

第4章--事务 事务原理与开发 事务Transaction: 什么是事务? 事务是并发控制的基本单位,指作为单个逻辑工作单元执行的一系列操作,且逻辑工作单元需满足ACID特性. i.e. 银行转账:开始交易:张三账户扣除100元:李四账户增加100元:结束交易. 事务的特性:ACID 原子性 Atomicity:整个交易必须作为一个整体来执行.(要么全部执行,要么全部不执行) 一致性 Consistency:整个交易总体资金不变 隔离性 Isolation: case1: 若张三给李四转账过程中

03.数据库基本操作

一.cmd命令登陆 su - postgres psql 2 1 su - postgres 2 psql 二.查看数据库 \l 1 1 \l 三.创建数据库 1.语法 Command:     CREATE DATABASEDescription: create a new databaseSyntax:CREATE DATABASE name    [ [ WITH ] [ OWNER [=] user_name ]           [ TEMPLATE [=] template ]  

03 数据库入门学习-完整性约束、关联关系

一.完整性约束 1.什么是约束 为了保证数据的合法性与完整性,对字段进行了除了数据类型以外添加额外的约束. 2.not null 2.1意义 not null是非空约束,数据不能为空 2.2语法 create table student (id int,name char(10) not null);#名字不能为空 3.default 3.1意义 default  默认值约束,可以指定字段的默认值 3.2语法 create table user (id int,name char(10) not

数据库方面

1.01 SQL查询数据表中重复数据 有一张MySQL的数据表名为 member,其中有2个字段 id unsigned int name varchar(20) 假设数据库中的数据类似: id    name 1.    AAA 2.    BBB 3.    CCC 4.    AAA 请写一段SQL取出数据表中name重复的数据.(注意只需要重复的) 答:SELECT * FROM member GROUP BY name having count(*)>1; 1.02有一张表:记录在这1

优化MySchool数据库设计之【巅峰对决】

优化MySchool数据库设计 之独孤九剑 船舶停靠在港湾是很安全的,但这不是造船的目的 By:北大青鸟五道口原玉明老师 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识点时,要进行验证 02.查看帮助文档和搜索引擎的使用 借助网络上的Blog文章 03.不要急功近利 不要抱着速成的想法,否则必然走弯路学习编程不是一蹴而就的事情付出的成本高,才能有一个高薪的收入 04.不要浮躁 不要什么都学,只学有用的 浮躁的程度和技术水平成反比的走自己的路,让别人去浮躁去吧! 每

Oracle数据库锁管理及锁分析_超越OCP精通Oracle视频课程培训10

Oracle视频教程目标 Oracle视频教程,风哥本套oracle教程培训学习熟悉锁的概念,介绍导致阻塞的原因,数据库死锁的检查方法,死锁模拟与死锁问题处理操作命令 适用人群 IT相关从业人员.Oracle数据库技术人员.想加工资的.想升职的都可以. 视频在线学习地址: http://edu.51cto.com/course/course_id-6545.html Oracle视频教程简介 Oracle视频教程,风哥本套oracle教程培训学习熟悉锁的概念,介绍导致阻塞的原因,数据库死锁的检查