数据库:SQLite

2020-10-12  本文已影响0人  Anwfly

一、数据库概念

1. 什么是数据库

数据库就是用来存储和管理数据的仓库!

2. 数据库的发展历程

①没有数据库,使用磁盘文件存储数据;
②层次结构模型数据库;
③网状结构模型数据库;
④关系结构 模型数据库:使用二维表格来存储数据;
⑤关系-对象模型数据库;

MySQL就是关系型数据库!

3. 常见数据库

4. 理解数据库

表结构:定义表的列名和列类型!
表记录:一行一行的记录!

我们现在所说的数据库泛指“关系型数据库管理系统(RDBMS - Relational database management system)”,即“数据库服务器”。

RDBMS.png

当我们安装了数据库服务器后,就可以在数据库服务器中创建数据库,每个数据库中还可以包含多张表。

TABLES.png

数据库表就是一个多行多列的表格。在创建表时,需要指定表的列数,以及列名称,列类型等信息。而不用指定表格的行数,行数是没有上限的。下面是tab_student表的结构:

student.png

当把表格创建好了之后,就可以向表格中添加数据了。向表格添加数据是以行为单位的!下面是s_student表的记录:

s_id s_name s_age s_sex
S_1001 zhangSan 23 male
S_1002 liSi 32 female
S_1003 wangWu 44 male

大家要学会区分什么是表结构,什么是表记录。

(4)应用程序与数据库(了解)

应用程序使用数据库完成对数据的存储!

image.png

二、SQL语言与SQLite数据库

       Google为Andriod的较大的数据处理提供了SQLite,他在数据存储、管理、维护等各方面都相当出色,功能也非常的强大。

  1. SQLite具备下列特点:

1.轻量级
SQLite和C/S模式的数据库软件不同,它是进程内的数据库引擎,因此不存在数据库的客户端和服务器。使用SQLite一般只需要带上它的一个动态库,就可以享受它的全部功能。而且那个动态库的尺寸也挺小,以版本3.6.11为例,Windows下487KB、Linux下347KB。
2.独立性
SQLite 数据库的核心引擎不需要依赖第三方软件,也不需要所谓的“安装”。
3.隔离性
SQLite 数据库中所有的信息(比如表、视图、触发器等)都包含在一个文件夹内,方便管理和维护。
4.跨平台
SQLite 目前支持大部分操作系统,不止电脑操作系统而且在众多的手机系统也是能够运行的,比如:Android。
5.多语言接口
SQLite 数据库支持多语言编程接口。
6.安全性

  1. SQLite数据类型

NULL: 这个值为空值
VARCHAR(n):长度不固定且其最大长度为 n 的字串,n不能超过 4000。
CHAR(n):长度固定为n的字串,n不能超过 254。
INTEGER: 值被标识为整数,依据值的大小可以依次被存储为1,2,3,4,5,6,7,8.
REAL:所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.
TEXT: 值为文本字符串,使用数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE).
BLOB: 值是BLOB数据块,以输入的数据格式进行存储。如何输入就如何存储,不改 变格式。
一般boolean类型可以使用这个数据类型
DATA:包含了 年份、月份、日期。
TIME: 包含了 小时、分钟、秒。

  1. 创建数据库有多种形式,这里采取其中一种创建方式:
    步骤:
  • 写一个类MySql继承SQLiteOpenHelper
  • 重写方法
    public MySql(Context context, String name, CursorFactory factory, int version)
    public void onCreate(SQLiteDatabase db) //可在此方法中初始化数据库
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
  • 在需要使用的地方 创建 自定义类MySql 对象
    // 上下文 库名 默认null 版本号
    MySql mySql = new MySql(MainActivity.this, "my.db", null, 1);
  • 通过MySql 对象 获得数据库读写权限
    SQLiteDatabase db = mySql.getWritableDatabase();// 写
    SQLiteDatabase db = mySql.getReadableDatabase()// 读

添加

//添加一条数据
public void inserUser(String name, int age){
    // 第一次是创建   往后是打开数据库
    MySql mySql = new MySql(MainActivity.this, "my.db", null, 1);
    SQLiteDatabase db = mySql.getWritableDatabase();// 写数据库权限
    // 类似 map   键是列名   键对应的值  列对应的值
    ContentValues contentValues = new  ContentValues(); 
    
    contentValues.put("name", name);
    contentValues.put("age", age);
    
    db.insert("demo", null, contentValues);

    db.close();// 关闭
}   

修改

public void upUser(String oldname,int oldage,String newname,int newage){

    MySql mySql = new MySql(this, "my.db", null, 1);
    SQLiteDatabase db = mySql.getWritableDatabase();
    
    // 修改后的 新数据      键是 列名    值是列对应的值
    ContentValues values = new ContentValues();
    
    values.put("name", newname);
    values.put("age", newage);
    
    db.update("demo", values , "name = ? and age = ? ", new String[]{oldname,oldage+""});
    
    // whereClause 修改的条件
    // whereArgs 修改条件对应的值
    // values  修改后的数据  (添加一样)
    
    db.close();    
}

删除

public void deleUser(String id){
    
    MySql mySql = new MySql(this, "my.db", null, 1);
    SQLiteDatabase db = mySql.getWritableDatabase();
    
    //        表名                    条件                            条件对应的值(字符串数组)
    int delete = db.delete("demo", "id = ?", new String[]{id});
    //删除  id = 1 的  一条数据
    
    db.close();
}

查询 所有 数据库

public void query(){
    
    // 第一次是创建   往后是打开数据库
    MySql mySql = new MySql(MainActivity.this, "my.db", null, 1);
    SQLiteDatabase db = mySql.getWritableDatabase();// 写数据库权限
    ArrayList<User> list = new ArrayList<User>();
    
    //查询所有数据
    Cursor query = db.query("demo", null, null, null, null, null, null);

    while(query.moveToNext()){
        
        //通过列名获得列的下标    通过下标 获得 对应的数据
        int id = query.getInt(query.getColumnIndex("id"));
        String name = query.getString(query.getColumnIndex("name"));
        int age = query.getInt(query.getColumnIndex("age"));
        
        Log.i("tag", "id:"+id+" "+ "name:"+name+" "+"age:"+age );
        
        list.add(new User(id, age, name));
    }
    Log.i("tag", "========>:"+list.size());
    
    tvshow.setText(list.get(0).getName()+" 集合的数据有:"+list.size());
    
    //关闭数据库
    db.close();
}

相关文章:Greendao

上一篇 下一篇

猜你喜欢

热点阅读