Android SQLite 数据库存学习与总结

发布于:2024-07-06 ⋅ 阅读:(17) ⋅ 点赞:(0)

Android 系统内置了一个名为 SQLite 数据库。那么 SQLite 是一种什么样的数据库,它有那些特点,应该怎么操作它?下面,让我们就来认识一下它吧。

1、概念: SQLite 是一种轻量级的关系型数据库,它不仅支持标准的 SQL 语法,还遵守了数据库的 ACID (Atomicity原子性、Consistency 一致性 、Isolation 隔离性 、Durability 持久性)事务。

2、特(优)点:

(1) 运算速度快;
(2) 占用资源少(几百KB);
(3) 能够存储量大且结构复杂的数据。

3、常用数据类型及关键字:

  • integer(整型)
  • real(浮点型)
  • text(文本类型)
  • blob(二进制类型)
  • primary key 设置属性为主键
  • autoincrement 表示属性所在的列是自增长的

4、数据库文件存储路径:/data/data/<package_name>/databases/<databases_name>.db

5、常用操作命令:

(1) 打开数据库:【 sqlite3 <database_name> 】
(2) 查看所有表:【 .table 】
(3) 查看表的构建命令:【 .schema <table_name> 】
(4)退出数据库编辑: 【 .exit 】 或【 .quit 】

在这里插入图片描述

6、创建 SQLite 数据库

第一步: 创建数据库需要定义一个子类去继承 SQLiteOpenHelper 抽象类,然后重写这个类的OnCreate()onUpgrade() 方法,并且还要定义一个构造方法。
其中一个构造方法的参数如下:

  • 参数1:Context
  • 参数2:数据库名称
  • 参数3:cursor(光标,查询数据时可返回,一般填null)
  • 参数4:数据库版本号(用于升级)

第二步:OnCreate() 方法中调用 execSQL() 方法,然后传入一个含 SQL 语句的字符串参数作为创建数据库内容的指令;

第三步: 创建 SQLiteOpenHelper 子类的对象,然后调用对象的 getReadableDatabase()getWritableDatabase() 方法来创建或打开数据库,这两个方法都会返回一个可对数据可进行读写操作的 SQLiteDatabase 对象。不同的是,当数据库不可写入时(如磁盘空间已满),前者返回的对象将会以只读的方式打开数据库,而后者将会出现异常。此外,需要注意的是,当数据库已存在时,程序是不会再创建数据库的。

以下是创建数据库的示例代码:

public class MyDatabaseHelper extends SQLiteOpenHelper {
 
    //定义创建book表格的SQL语句
    public static final String CREATE_BOOK = "create table Book("
            +"id integer primary key autoincrement,"
            +"author text,"
            +"price real,"
            +"pages integer,"
            +"name txt)";
    private Context mContext;
 
    public MyDatabaseHelper(@Nullable Context context, @Nullable String name,
                            @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
        mContext = context;
    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
        //执行SQL语句
        db.execSQL(CREATE_BOOK);
        Toast.makeText(mContext, "Create succeeded!", Toast.LENGTH_SHORT).show();
    }
 
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
 
    }
}
public class MainActivity extends AppCompatActivity {
 
    private MyDatabaseHelper dbHelper;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 1);
        Button createDatabase = (Button) findViewById(R.id.create_database);
        createDatabase.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dbHelper.getReadableDatabase();
            }
        });
    }
}

网站公告

今日签到

点亮在社区的每一天
去签到