夏洛打老师了 發表於 2021-9-3 19:02:00

Android开发——Sqlite

<h1>&lt;1&gt;数据库的创建和升级(更新)</h1>
<p>——数据库的创建,我们首先需要查看SqliteOpenhelper类</p>
<p>然后开始创建:</p>
<p>1:新建一个类去继承SqliteOpenhelper类,重写其中的方法</p>
<p>(这个类中除了构造方法用于创建新数据库之外,还有两个要重写的方法很重要</p>
<p>第一个是onCreate()方法,在第一次创建数据库的时候会被调用,一般用于创建数据库中的表,用来初始化数据库</p>
<p>第二个是onUpgrade()方法,在数据库版本更新时会被调用,要改变数据库的版本号,使新版本号不同于旧版本号,在这个方法里一般对数据库中的表的结构进行修改</p>
<p>需要注意的是,版本只能升级,不能降级,降级会报错</p>
<p>)</p>
<p>&nbsp;</p>
<p>2:实现其中的构造方法</p>
<p><img src="https://img2020.cnblogs.com/blog/2505674/202109/2505674-20210903161518690-1449494106.png"></p>
<p>3:在主方法中创建这个子类对象,再调用该对象的getReadableDatabase()/getWriteableDatabase()方法,即可创建数据库</p>
<p><img src="https://img2020.cnblogs.com/blog/2505674/202109/2505674-20210903161723741-504510874.png"></p>
<p>4:这样虽然创建了数据库,但是在数据库中是没有数据也没有表的,所以我们一般在创建数据库的时候在onCreate()方法里创建表</p>
<p><img src="https://img2020.cnblogs.com/blog/2505674/202109/2505674-20210903171736898-17189382.png"></p>
<p>&nbsp;</p>
<p>——数据库的更新</p>
<p>&nbsp;数据库的升级更新也是通过在继承SqliteOpenhelper类的新类中,重写onUpgrade()方法来实现的</p>
<p><img src="https://img2020.cnblogs.com/blog/2505674/202109/2505674-20210903171935222-1653451330.png"></p>
<p>&nbsp;</p>
<p>在创建和更新完数据库之后,我们可以在AS中找到手机里存储的数据库</p>
<p>打开AS中的View菜单,选择Tool windows,打开Decice File Explorer</p>
<p>在其中找到data/data/com.example.databasedemo/databases</p>
<p>该目录下就保存着我们新创建的数据库文件</p>
<p>可以导出到电脑中,用相应的数据库界面操作软件查看</p>
<p><img src="https://img2020.cnblogs.com/blog/2505674/202109/2505674-20210903173647536-934938146.png"></p>
<p>&nbsp;</p>
<h1>&lt;2&gt;对数据库中数据进行操作的DAO类</h1>
<p>在开发中,一般会创建一个DAO类,这个类存的是一些方法,用于对数据库中数据进行 增删改查</p>
<p>——DAO类的创建格式一般都是固定的,如下:</p>
<p><img src="https://img2020.cnblogs.com/blog/2505674/202109/2505674-20210903175012681-1105983749.png"></p>
<p>&nbsp;</p>
<p>——然后我们来完善 增删改查 四个方法里的内容</p>
<p><img src="https://img2020.cnblogs.com/blog/2505674/202109/2505674-20210903180357525-1390792874.png"></p>
<p><img src="https://img2020.cnblogs.com/blog/2505674/202109/2505674-20210903180446077-202978716.png"></p>
<p>&nbsp;</p>
<h1>&lt;3&gt;利用Android自带的API进行增删改查操作</h1>
<p>——增:db.insert(表的名称,null,要加入的数据);</p>
<p>其中,要添加的数据是键值对的形式,我们可以创建一个</p>
<p>ContentValues values = new ContentValues();</p>
<p>如何往里添加数据</p>
<p>values.put(字段1的名称,字段1的值);</p>
<p>values.put(字段2的名称,字段2的值);</p>
<p>...</p>
<p>最后把values带入方法中的参数即可</p>
<p>&nbsp;</p>
<p>——删:db.delete(表名,null,null);</p>
<p>——改:db.update(表名,要改的数据键值对,null,null);</p>
<p>&nbsp;</p>
<p>——查:Cursor cursor = db.query(表名,null,null,null,null,null,null);</p>
<p>获得游标,然后按上面的方法遍历即可</p>
<p>&nbsp;</p>
<h1>&lt;4&gt;数据库事务:</h1>
<p>数据库事务是非常重要的一个功能,主要体现在两个方面:</p>
<p>——1:安全性</p>
<p>使用事务可以避免一些突发情况导致的数据异常</p>
<p>例如公司从账户上给你打钱发工资,你的账户余额应该增长,公司的账户余额应该减少</p>
<p>如果中途突然停电了,那么传统的数据库可能会出现公司余额减少,但你的余额还并未增长的情况</p>
<p>这时用事务就可以有效避免这种情况(事务就类似于Java中的事务锁)</p>
<p>&nbsp;</p>
<p>db.beginTransaction();&nbsp;&nbsp; //打开事务锁</p>
<p>try{</p>
<p>操作语句...</p>
<p>db.setTransactionSuccessful();&nbsp;&nbsp; //操作成功,未发生中断</p>
<p>}catch(异常){</p>
<p>}finally{</p>
<p>db.endTransaction();&nbsp;&nbsp; //关闭事务锁</p>
<p>db.close();</p>
<p>}</p>
<p>&nbsp;</p>
<p>——2:高效性</p>
<p>例如我们往数据库中添加10000条数据</p>
<p>直接用for循环耗时很慢</p>
<p>用事务就效率很快</p>
<p>&nbsp;</p>
<p>因为在没有事务的情况下,执行的操作为 打开数据库-&gt;插入数据-&gt;关闭数据库 依次执行10000次</p>
<p>而用事务来处理,直接把所有数据存储到内存中,然后一次写入到数据库里</p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/danile97/p/15223852.html
頁: [1]
查看完整版本: Android开发——Sqlite