第五章 SQLite数据库

第五章 SQLite数据库

SQLite数据库用于储存程序中的大量数据量数据,并对数据进行管理和维护。

5.1 SQLite数据库简介

​ SQLite数据库是一个轻量级数据库。它的设计目标时嵌入式的,而且占用资源非常低,在内存中只需要几百KB的储存空间。SQLite是遵循ACID的关系型数据库管理系统,ACID是指 原子性, 一致性, 隔离性, 持久性。比起MYSQL,PostGreSQL这两款开源数据库管理系统来说,SQLite的处理速度更快

​ SQLite没有服务器进程,它通过文件保存数据,该文件是跨平台的,可以放在其他平台使用并且在保存数据时,支持null , integer , real(浮点数),text(字符串文本)和blod(二进制对象)五种数据类型。但实际上SQLite也接收varchar(n) , char(n) , decimal(p, s)等数据类型,只不过在运算或保存时会转化为对应的五种类型。因此,可以将各种类型的数据保存在各种字段中,而不用关心数据声明的数据类型。

5.2 数据库的创建

推荐使用SQLiteOpenHelper的子类创建数据库,因此需要创建一个类继承自 该类,并重写onCreate 和onUpgrade方法即可,示例代码如下:

public class MyHelper extends SQLiteOpenHelper {
    
    
    
    public MyHelper(Context context) {
    
    
        super(context, "luoxin88.db",null,2);
    }
    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
    
    
        sqLiteDatabase.execSQL("create table " +
                "infomation(_id interger primary key autoincrement," +
                "name varchar(20)," +
                "price interger)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
    
    

    }
}

上面的构造方法中指定数据库,这里是直接指定,也可以在在创建helper类对象时指定,onCreate方法在数据库第一次创建时调用。

总之创建一个类继承SQLiteHelper,这是安卓中操作数据库的工具类,然后我们要操作数据库时就从该类的实例对象中获取数据库。

5.3 数据库的使用

5.3.1 SQLite基本操作

前面介绍了创建数据库,接下来针对数据库操作的增删查改进行详细讲解

  1. 增加一条数据

    public void insert(String name, String price) {
          
          
                SQLiteDatabase db = myHelper.getWritableDatabase();//获取可写的数据库连接
                ContentValues values = new ContentValues();
                values.put("name",name);
                values.put("price",price);
                db.insert("information",null,values);//表名称 , 缺省值, 要插入的数据对象ContentValues
                db.close();
            }
    
  2. 修改一条数据

    public int update(String name,String price) {
          
          
        SQLiteDatabase db = myHelper.getWritableDatabase();//获取可写的数据库连接
        ContentValues values = new ContentValues();
        values.put("price",price);
        int number = db.update("information",values,"name=?",new String[] {
          
          name});
        db.close();
        return number;
    }
    

    update函数第一个参数是表名称,第二个参数是一个ContentValues对象。第三个参数为可选的where语句,即条件语句。第四个参数表示前面条件语句中占位符中的参数列表,他们会替换点前面的占位符。

  3. 删除一条数据

    public int delete (long id) {
          
          
        SQLiteDatabase db = myHelper.getWritableDatabase();
        int number = db.delete("information","_id=?",new String[]{
          
          id+""});
        db.close();
        return number;
    }
    

    第一个参数:表名 , 第二个参数:条件 , 第三个参数:占位符参数列表

  4. 查询一条数据

    public boolean find(long id) {
          
          
        SQLiteDatabase db = myHelper.getReadableDatabase();
        Cursor cursor = db.query("information",null,"_id=?",new String[]{
          
          id+""},null,null,null);
        boolean resulit = cursor.moveToNext();
        cursor.close();
        return resulit;
    }
    

    第一个参数:表名 , 第二个参数:查询的列名, 第三个参数:查询条件子句 , 第四个参数:条件查询子句的条件值, 第五个参数:分组方式, 第六个参数:接收having条件, 第七个参数表示排序方式

除了用上述的方法进行增删查改外,还可以用execSQL()方法通过SQL语句进行操作,如

db.execSQL("insert into information (name ,price ) values(?, ?)", new Object[]{
    
    name, price});

5.3.2 SQLite中的事务

开启事务 : db.beginTransaction()

关闭事务:db.endTransaction()

5.4.1 ListView控件

它以列表的形式显示具体的数据内容,当时护具过多时会出现滚动条,并且能够根据数据长度自适应屏幕长度。

Guess you like

Origin blog.csdn.net/m0_45972156/article/details/121516704