2.16sqlite

一、今日学习内容

    SQLite:

       SQLite简介:是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。

        SQLite数据库,它广泛用于包括浏览器、IOS,Android以及一些便携需求的小型web应用系统。

SQLite数据库的常用操作:

        包含建表、删除表、增、删、改、查,SQL语法如下:

        建表:

create table if not exists 表名(字段1 类型(长度),字段2 类型(长度),...)

        删除表:

drop table if exists 表名

        增:

insert into 表名 (字段1,字段2,字段3 ...) values (值1,值2,值3 ...);

insert into 目标数据表 select * from 源数据表;

        删:

delete from 表名 where 条件表达式

        改:

update 表名 set 字段1=值1,字段2=值2... where 条件表达式

       查:

select * from 表名 where 条件表达式

实例:

        1、首先先创建一个DBHelper类(DBOpenHelper.java)

        在这里会执行建库、建表的操作

复制代码
package com.hyl.dao;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

/**
 * @programName: DBOpenHelper.java
 * @programFunction: database helper class
 * @createDate: 2018/09/29
 * @author: AnneHan
 * @version:
 * xx.   yyyy/mm/dd   ver    author    comments
 * 01.   2018/09/29   1.00   AnneHan   New Create
 */
public class DBOpenHelper extends SQLiteOpenHelper {
    public DBOpenHelper(Context context,String name, CursorFactory factory,
                        int version){
        super(context, name, factory, version);
    }

    @Override
    //首次创建数据库的时候调用,一般可以执行建库,建表的操作
    //Sqlite没有单独的布尔存储类型,它使用INTEGER作为存储类型,0为false,1为true
    public void onCreate(SQLiteDatabase db){
        //user table
        db.execSQL("create table if not exists user_tb(_id integer primary key autoincrement," +
                "userID text not null," +
                "pwd text not null)");
    }

    @Override//当数据库的版本发生变化时,会自动执行
    public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){

    }
}
复制代码

LitePal:

   

1.配置Litepal:在build.gradle文件的dependencies闭包中添加依赖:compile ‘org.litepal.android:core:1.4.1’
2.在src/main目录下创建一个assets目录,在该目录下新建一个litepal.xml文件,编辑里面内容:

用于指定数据库名
用于指定数据库版本号

3.在AndroidManifect.xml中的标签中写如下代码
android:name=“org.litepal.LitePalApplication”
4.可以创建和升级数据库了
如:创建一个Book类
public class Book extends DataSupport{
private int id;
private String author;
private double price;
private int pages;
private String name;
private String press;
//生成get和set方法的快捷键是Alt+Inser
public int getId() {
return id;
}

5.创建数据库,在MainActivity中添加如下代码:
Button createDatabase=findViewById(R.id.create_database);
createDatabase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LitePal.getDatabase();
}
});
6.升级同样的方式创建一张表,需要在litepal.xml添加mapping标签,同时版本号加1
7.添加数据:
Button addData=findViewById(R.id.add_data);
addData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Book book=new Book();
book.setName(“The Da Vinci Code”);
book.setAuthor(“Dan Browm”);
book.setPages(454);
book.setPrice(16.94);
book.setPress(“Unknow”);
book.save();
}

8.更新数据:
Button updataData=findViewById(R.id.updata_data);
updataData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Book book=new Book();
//方法一只能对已存储的对象进行操作,限制性比较大
// book.setName(“The Lost Symbol”);
// book.setAuthor(“Dan Brown”);
// book.setPages(510);
// book.setPrice(19.95);
// book.setPress(“Unknow”);
// book.save();
// book.setPrice(10.99);
// book.save();
//方法二
book.setPrice(15.00);
book.setPress(“Anchor”);
book.updateAll(“name=? and author=?”,“The Lost Symbol”,“Dan Brown”);
//LitePal提供了一个setToDefault()方法,然后传入相应的列名就可实现
book.setToDefault(“pages”);
book.updateAll();
}
});
9.删除数据:
Button deleteData=findViewById(R.id.Delete_data);
deleteData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DataSupport.deleteAll(Book.class,“price<?”,“15.01”);
}
});
10.查询数据
Button queryData=findViewById(R.id.Query_data);
queryData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List books=DataSupport.findAll(Book.class);
for (Book book:books){
Log.d(“MainActivity”, "book name is "+book.getName());
Log.d(“MainActivity”, "book author is "+book.getAuthor());
Log.d(“MainActivity”, "book pages is "+book.getPages());
Log.d(“MainActivity”, "book price is "+book.getPrice());
Log.d(“MainActivity”, "book press is "+book.getPress());
});

二、遇到的问题

   对于SQLite的用法不是很理解

三、明日计划

   明天继续学习相关知识

原文地址:https://www.cnblogs.com/zyljal/p/14902744.html