安卓数据读写

安卓数据读写

2021/4/6

1812190328 吴烨峰 安全1801

实验内容

通过文件操作和数据库操作进行数据读写

一:完成安卓对文件的读写操作。分成读写不一致和一致两种情况。

1.新建一个empty activity,在activity_main.xml中添加四个组件

在这里插入图片描述
在这里插入图片描述

editText_input用来输入想要保存到文件中的数据
button_save按钮用来执行事件,将前面输入的数据保存到文件中
textView_read用来显示文件中保存的数据
button2_read按钮用来执行事件,将文件中的数据读取出来,显示在textView_read上
2.以下是在mainactivity中写入的代码
创建两个按钮 btn1,btn2,对应button_save、button2_read

在这里插入图片描述

两个按钮的监听响应事件

button_save的响应事件
在这里插入图片描述

上面用到了一个openFileOutput()方法,通过它可以得到一个FileOutputStream对象,然后使用Jave流的方式将数据写入到文件中了。
3.以下是不一致的情况展示

在这里插入图片描述
在这里插入图片描述

此时可以看到我们输入的1812190328保存后,进行读取,数据并没有显示成1812190328。问题出在哪呢,应该就是getbytes,所以应该加一个字符类型强制转换。
因此我们做以下修改,主要就是红框中的内容,做一个强制String 类型转换

在这里插入图片描述

以下是修改后,读写一致的情况

在这里插入图片描述

二:完成安卓对SQLite数据库的操作。包括数据库建立、创建表格、插入数据、更新数据、删除数据以及查询数据。

1.数据库的建立
创建一个名叫BookStore.db的数据库。
在mainactivity中加入一个按钮,并且设置点击事件。

在这里插入图片描述

上面构建了一个MyDatabaseHelper对象,并且通过构造函数的参数将数据库名指定为BookStore.db,版本号为1。在点击事件中调用了getWritableDatabase()方法,所以第一次按下的时候会自动检测有没有我们需要创建的数据库,如果还没有被创建,就会调用MyDatabaseHelper中的oncreate()方法,创建数据库,并且提示创建成功。再次点击按钮,则不会二次响应。
查询一下,数据库有没有建好

在这里插入图片描述

在这里已经可以看到BookStore.db已经被创建了
2.创建表格
创建表格这一步已经在创建数据库的时候,一并创建了,相关代码如下

在这里插入图片描述

创建了Book表,有id、name字段,id为主键,且自增长

在这里插入图片描述

这边已经可以看到创建了Book表
3.插入数据
新建了一个按钮,id为button_insert,添加一个按钮事件,以下为代码

在这里插入图片描述

上面的代码中,有一个contentvalues
ContentValues是一种存储的机制,但是只能存储基本类型的数据,像string,int之类的,不能存储对象这种东西,用法如下

ContentValues initialValues = new ContentValues();

initialValues.put(key,values);

SQLiteDataBase sdb ;

sdb.insert(database_name,null,initialValues);

插入成功就返回记录的id否则返回-1;

上面我插入了两条数据,分别是book1,book2,下图是点击按钮后数据库的数据

在这里插入图片描述

4.更新数据
新建了一个按钮,id为button_update,添加一个按钮事件,以下为代码

在这里插入图片描述

在代码中,最重要的是这两句

在这里插入图片描述

就是把book1这条记录的名字改成book1.1
以下是进行操作后,数据库中的数据

在这里插入图片描述

5.删除数据
新建了一个按钮,id为button_delete,添加一个按钮事件,以下为代码

在这里插入图片描述

代码上的操作就是把book1.1这条数据删除
以下是进行操作后,数据库中的数据

在这里插入图片描述

6.查询数据
新建了一个按钮,id为button_query,添加一个按钮事件,以下为代码

在这里插入图片描述

这里调用了movetofirst()方法,将数据的指针移动到第一行的位置,然后进入下一个循环中,去遍历查询到的每一行数据。在这个循环中可以通过Cursor的getColumnIndex()方法获取到某一列在表中对应的位置索引,然后把这个索引传入到对应的取值方法中,就可以在数据库中读取到数据了。

在这里插入图片描述

上图是使用上面的添加数据,加入了五条数据。
下图是按下按钮后,logcat日志中显示的数据

在这里插入图片描述

附加题:对SQLite的所有操作都是根据用户的输入完成。

附加题中添加4个按钮,分别是,插入数据,更新数据,删除数据,查询数据
以下为四个按钮相关的代码
(1)插入数据

在这里插入图片描述

以下是效果

在这里插入图片描述

输入的是1812190328 wuyefeng,查询数据库中的数据,显示已经插入

在这里插入图片描述

(2)更新数据
代码如下

在这里插入图片描述

有两个edittext,A(上)B(下),该操作,把数据库中的A的name改成B

在这里插入图片描述

效果如下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

成功
(3)删除数据
代码如下
有两个edittext,A(上)B(下),该操作使用A,把数据库中的A数据删除

在这里插入图片描述

效果如下

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第12条记录,wuyefeng02已经被删除
成功
(4)查询数据
代码如下

在这里插入图片描述

有两个edittext,A(上)B(下),该操作使用A,查询数据库是否存在A

在这里插入图片描述

效果如下

在这里插入图片描述

book4存在:

在这里插入图片描述

在这里插入图片描述

booksadsadsad不存在

在这里插入图片描述在这里插入图片描述

成功
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值