android studio中SQLite数据库

SQLite是一款轻量级的关系型数据库,它的运算速度非常快,占用资源很少,通常只需要几百KB的内存就足够了。
SQLite不仅支持标准的SQL语句,还遵循了数据库的ACID事务,它甚至不用设置用户名和密码就可以使用。
Android中专门提供了一个SQLiteOpenHelper帮助类来更加方便的管理数据库。
SQLiteOpenHelper是一个抽象类,使用它需要创建一个自己的帮助类去继承它。SQLiteOpenHelper中有两个抽象方法,分别是onCreate()和onUpgrade(),我们需要在帮助类里面重写这两个方法,然后分别在这两个方法中去实现创建,升级数据库逻辑。
SQLiteOpenHelper中还有两个非常重要的实例方法:getReadableDatabase()和getWritableDatabase()。这两个方法都可以创建或打开一个现在的数据库(若数据库已经存在则直接打开,否则创建一个新的数据库),返回一个可对数据库进行读写操作的对象。当数据库不可写入的时候,(若磁盘空间已满),getReadableDatabase()方法返回的对象将以只读的方式打开数据库,而getWritableDatabase()方法则将出现异常。
SQLiteOpenHelper中有两个构造方法可供重写,一般采用参数少的那个构造方法。
接收4个参数,第一个,Context 第二个,数据库名,创建数据库时使用的就是这里指定的名称。
第三个,允许我们在查询数据库时返回一个自定义的Cursor,一般都是传入null;第四个,表示数据库的版本号,可用于对数据库的升级操作。
构建出SQLiteOpenHelper的实例之后再调用他的getReadableDatabase()或getWritableDatabase()方法就能创建数据库了

adb是Android SDK中自带了一个调试工具,使用这个工具可以直接对连接在电脑上的手机或模拟器进行调试操作。它存放在sdk的platform-tools目录下,首先将它的路径配置到环境变量中。
配置好后,
1.打开cmd输入adb shell就会进入到设备控制台。可能会出现以下错误:
more than one device/emulator原因是可能连接多个设备,输入adb kill-server即可,然后重新输入adb shell 命令即可启动
出现#表示超级管理员的意思,也就是说现在你可以访问模拟器中的一切数据。若是$表示你现在是普通管理者,输入su命令切换为超级管理员
2.使用cd命令进入到/data/data/com.example.databasetest/databases/目录下,使用ls命令查看该目录下的文件,该目录下有两个文件一个dababases.db,另一个是BookStore.db-journal是为了让数据库能够支持事务而产生的临时日志文件,这个文件大小通常为0字节
3.接下来借助sqlite命令打开数据库,只需要键入sqlite3后加入数据库名即可,这时就打开数据库了
4.输入.table可以看见数据库中有两个表。android_metadata表是每个数据库中都会自动生成的
而另一张Book就是我们在MyDatabaseHelper中创建的了。
5.输入.schema命令查看他们建表语句。
6.输入.exit或.quit可以退出数据库编辑,再输入.exit就可以退出设备控制台了。

升级数据库:
onUpgrade()方法适用于对数据库进行升级的。
当我们写好一个表后创建成功后,想再创建一个表时会发现不能创建,这时我们可以卸载程序重新运行才会创建成功,这个方法是极端的做法,这时我们就可以用到升级数据库方法。如
在onUpgrade()方法写入如下代码,db.execSQL(“drop table if exists Book”);
db.execSQL(“drop table if exists values”);
onCreate(db);
在MainActivity中修改数据库版本号,大于1即可。
数据库的进行操作有4中CRUD 添加(Create),查询(Retrieve),更新(Updata),删除(Delete)
添加:insert
查询:select
更新:update
删除:delete
1.insert()方法,专门用于添加数据的,它接收三个参数,1.表名 2.用于为指定添加数据的情况下给某些可为空的列自动赋值NULL,一般用不到,直接传入null即可,3.参数是一个ContentValues对象,他提供了一系列的put()方法重载,用于向ContentValues中添加数据,只需将表中的每个列名以及相应的待添加数据传人即可。
2.updata()方法,用于对数据的更新,接收4个参数,第一,表名;第二,ContentValues对象,要把更新数据在这里组装进去。第三第四个参数用于约束更新某一行或某几行中的数据,不指定的话就是默认更新所有行。
3.delete()方法专门用于删除数据,这个方法接收3个参数,第一,表名;第二第三参数用于约束删除某一行或某几行的数据。不指定会默认删除所有行。
4.query()方法用于对数据进行查询,7个参数,1.表名2.用于指定去查询哪几列3.4.用于约束查询某一行或某几行的数据,不指定则默认查询所有行数据,5.用于指定需要去group by的列,不指定则表示不对查询结果进行group by操作6.用于对group by之后的数据进行进一步的过滤,不指定则表示不急你先过滤,7.用于指定查询结果的排列方式,不指定则表示默认排列方式
query()方法参数 对应SQL部分 描述

table from table_name 指定查询的表名
columns select column1,column2 指定查询的列名
selection where column=value 指定where的约束条件
selectionArgs - 为where中的占位符提供具体的值

groupBy group by column 指定需要group by的列
having having column=value 对group by后的结果进一步约束
orderBy order by column1,column2 指定结果查询的排列方式
调用query()方法会返回一个Cursor对象,查到的所有数据都从这个对象中取出来。

发布了25 篇原创文章 · 获赞 1 · 访问量 718

猜你喜欢

转载自blog.csdn.net/weixin_43551957/article/details/103975378