上一篇文章中咱们学习了一些 Android 数据库相关的基础知识,和几个较为有用的 SQLite 指令,都是直接在指令行操作的。
前语
上一篇文章中咱们学习了一些 An程序员客栈droid 数据库相关的基础知识,和几个较为有用的 SQLit程序员e 指令,都是直接在指令行操作的。可是咱们都知道,数据库是要和程序结合mysql增修正查句子在一起运用的,单独对一个数据库去进行増批改查操作并没有什么含义,因而今日咱们就来学习一下如安开源阅览app下载装置在 Android 程序傍边去操作 SQLite 数据库,还没看过前一篇文章的朋友能够先去参阅 Android 数据库高手秘籍 (一)—程序员那么心爱—SQLite 指令。
操作数据库的第一步当然源码本钱是创立表了,传统创立表的办法信任源码本钱大多数人都知道,那么今日我除了会展现传统的建表办法之外,还会阐明 LitePalmysql装置配置教程 这个结构的底子用法,并运用它来完毕相同的建表操开源中国作,让咱们体会到运用结构来操作数据库的魅力。
那么先来简略介绍一下吧,LitePal 是一款开源的 An程序员是做什么的dr源码之家oid 数据库结构,它采用了政策联络映射 (ORM) 的方法,并将我程序员客栈们平常开发时最常用到的一些数据库功用进行了封装,使得不必编写一行 SQL 句子就能够结程序员薪酬一般多少束各种建表、増批改查的源码编辑器手机版下载操作开源软件。而且 LitePal 很“轻”GitHub,jar 包只需 100k 不到,而且近乎开源阅览零装备,这一点和 Hibernate 这类的结构有很大差异。现在 LitePal 的源码现已保管到了 GitHub 上,地址是 github.com/L源码编辑器手机版下载itePal程序员自学Fram…。
OK,简略介绍源码本钱完了 LitePal,咱们仍是先来看一下,在传统的 Android 开发中,需求怎样去程序员是学什么专业创立表。
传统的建表github永久回家地址办法
其实为了便利咱们对数据库表进行办理,Android 自身就供给了一个帮助类:SQLiteOpenHelper。这个类集创立和开源节流是什么意思是什么晋级数据库于一身,而且主动办理了数据库版别,算是一个十分好用的工具。
那咱们现在就来试试 SQLiteOpenHelper 的用法吧。首要你要知道 SQLiteOpenHelper 是一个笼统类,这意味着假定咱们想要运用它的话,就需求创立一个自己的帮助类去承继它。SQLiteOpenHelper 中有两个笼统办法,别离是 onCre程序员是学什么专业ate() 和 onUpgrade(),咱们必须在自己的帮MySQL忙类里边重写这两个办法,然后分开源阅览app下载装置别在这两个办法中去完毕创立、晋级数据库的逻辑。本篇文章只需求把留心力放在创立数据库这儿就行了,晋级MySQL数据库咱们会在下一篇文章中去讨论。
新github永久回家地址建一个 MySQLiteHelper 类并让它承继 SQLiteOp源码网站enHelper,这样一个最底子的数据库帮助类的代码如下所示:
pumysql优化blic c源码年代训练怎样样lass MySQLiteHelper extends SQLiteOpenHelper {
public MySQLiteHelper(Con程序员带辣条参奥运text con源码年代训练怎样样text, String n开源节流ame, CursorFactory factory,
super(cmysql装置配置教程o源码交易渠道排行ntext,github是干什么的 name,MySQL f程序员是学什么专业actory, version);
public void onCreate(SQLiteDatabase db) {
public voi源码编辑器d onUpgrade(SQLiteDatabase db, int程序员怎样学 oldVersion, int newVersion)源码是什么意思 {
其间,当数据库创程序员自学建的时分会调用 onCreate() 办法,在这儿去执行建表操作就能够了。比源码是什么意思如说咱们想新建一张 news 表github下载,其间有 title,content,publishdate,commentcount 这几列,别离代表着新闻标题、新闻内容、发布时间和谈论数,那么代码就能够这样写:
public class MyS开源QLiteHelper extends SQLiteOpenHelper {
public static final String CREATE_NEWS = "create table news ("
+ "id integer primary key autoincrement, "
+ "c程序员客栈ommentcount integer)";
public MySQLiteHelper(Context context, String name, CursorFac开源软件tory factory,
super(cgithub是干什么的ontext, name, factory, version);
public void onCrea程序员怎样学te(SQLiteDatabase db) {
能够看到,咱们把建表句子界说成了一个常量,然后在 onCreate()办法中去执行了这条建表句子,news 表也就创立成功了。这条建表句子虽然简略,可是里边仍是包括源码交易渠道排行了一些小的细节,我来阐明一下。首要,依据数据库的范式要求,任何一张表都应该是有主键的,所以这儿咱们添加了一个自增加的 id 列,并把它设为主键。然后 title 列和 content 列都是字符串类型的,commentcount 列是整型的,这都很好了解,可是 publishdate 列该怎样规划呢?因为 SQLite 中并不支撑存储日期这种数据类型,因而我开源众包们需求将日期先转换成 UTC 时间 (自 1970 年 1 月 1 号零点) 的毫秒数,然后再存储到数据库中,因而 publishdate 列也应该是整型的。
现在,咱们只需求获取到mysql数据库命令大全 SQLiteDatabase 的实例程序员是做什么的,数据库表就会主动创立了,如下所示:
SQLiteOpenHelper dbHelper = new MySQLi开源阅览teHelper(this, "demo.db", null, 1);
SQLi程序员那么心爱temysql面试题Database db = dbHelper.getWritableDatabase();
感觉很简略很方便是吗?那你就太简略满足了,下面咱们就来学习一下 LitePal 的底子用法,看一看运用这个结构是怎样完毕相同的功用的。开源矿工
LitePal 的底子用法
虽然 LitePal 宣称是近乎零装备,但也只是 “近乎” 而已,它仍是需求进行一些简略装备才能够运源码年代训练怎样样用的,那么咱们第一步就先快速学习一下 Lit开源ePal 的装备办法。
快速装备
1. 引源码交易网站源码入 Jar 包或源码
首要咱们需求将 LitePal 的 jar 包引进到项目傍边,能够点击这儿查看 LitePal 的最新版别,选择你需求的下载即可。下载好了 jar 包之后,把它拷贝到项目的 libs 目录中就算是引进成功了,如下图所示:
假定你不想用 jar 包的话,也能够把 LitePal 的源码下载下来,然后作为一个 library 库导入到 Eclipse 傍边,再让咱们的项目去引用这个 library 库就能够了。
2. 装备 litepal.xml
接着在项目的 assets 目录下面新建一个 litepal.xml 文件,并将以下代码拷贝进去:
<?xml version="1.0" encoding="utf-8"?>
<dbname value="demo" ></dbname>
<version value="1MySQL" ></version>
装备文件恰当简略, 用于设定数据库的源码是什么意思姓名, 用于设定数据库的版别号, 用于设定全部的映射模型,咱们稍后就会用到。
3. 装备 LitePalApplicatgithub直播渠道永久回家ion
因为操作数据库时需求用到 Context,而咱们显然不期望在每个接口中都去传一遍这个参数,那样操作数据库就显得源码年代太繁琐了。因而,LitePal 运用了一个办法来简化掉 Context 这个参数,只需求在 AndroidManifest.xml 中装备一下 Lite源码是什么意思PalApplication,全部的数据库操作就都不必再传 Context 了,如mysql面试题下所示:
angithub直播渠道永久回家droid:
当然,有些程序或许会有自己的 Application,并在这儿装备过了。比方说有一个 MyApplication,如下所示:
android:
没有联络,源码年代这时只需求批改一下 MyApplication 的承继结构,MySQL让它不要直接承继 Application 类,而是承继 LitePalApplication 类,就能够运用全部都能正常作业了,代码如下所示:
public class MyApplicatio程序员是学什么专业n e开源软件xtends LitePalApplication {
可是,有些程序或许会遇到一些愈加极点的mysql索引情况,比方说 MyApplication 需求承继其他一个 AnotherApplication,而且这个 AnotherApplica程序员是学什么专业tion 仍是在 jar 包傍边的,不能批改它的代码。这种情况应该算是比较少见了,可是假定你遇到了的话也不必急,仍然是有阐明方案的。你能够把 L开源阅览app下载装置ite源码之家Pal 的源码下载下来,然后把 src 目录下的全部代码直接拷贝到你项目的 src 目录下面,接着翻开 LitePalApplicatio源码交易渠道排行n 类,将它的承继结构改成承继自 AnotherApplication,再让 MyApplicatimysql密码忘记了怎样办on 承继自 LitePalApplication,这样全部的 Application 就都能够在一起正常作业了。
只是三步,咱们就将全部的装备作业全部完毕了,而且这是一件一本万利的工作,自此开源阅览以后,你就能够开心肠体会 LitePal 供给的各种便当了,就让咱们从建表开端吧。
开端建表
前面在介绍的时分现已说了,Litmysql密码忘记了怎样办ePal 采纳的是政策联络映射 (ORM) 的方法,那么什么是政策联络映射呢?简略点说,咱们运用的编程言语是面向政策言语,而咱们运用的数据库则是联络型数据库,那么将面向政策的言语和面向联络的数github官网据库之间建立一种映射联络,这便是政策联络映射了。
可是咱们为什么要运用政策联络映射方法呢?这首要是因为大多数的程序员都很擅长面向政策编程,但其GitHub间只需少部分的人才比较知晓联络源码编辑器手机版下载型数据库。而且数据库的 SQL 言语不流转难明,就算你很知晓它,恐怕也不喜开源节流是什么意思是什么欢经常在代码中去写它吧?而政策联络映射方法则很好地处理了这个问题,它容许咱们运用面向政策的办法来操作数据库,然后能够从不流转难明的 SQL 言语中脱节出来。
那么接下来咱们就看一看 LitePal 中是怎样建表的吧。依据政策联络映射方法的理念,每一张表都应该对应一个模型 (Model),也便是说,假定咱们想要建一张 news 表,就应该有一个对应的 News 模型类。新建一个 News 类,如下所示:
package com.ex开源阅览ample.databasetest.model;
然后,表中的每源码编辑器手机版下载一列其实便是对应了模型类中的一个字段,比方 news 表中有 id、title、content、publishd开源中国ate、cogithub永久回家地址mmentcount 这几个列,那么在 News 类中就也应该有这几个字段,代码如下所示:
private Date publishDate;
private int commentCount;
其间 id 这个字段可写可不写,因为即便不写这个字段,LitePal 也会在表中主动生成一个 id 列,究竟每张表都必定要有主键的嘛。
这儿我要特别阐明一下,LitePal 的映射规矩是十分轻量级的,不像一些其它的数据库结构,需求为每个模型类单独装备一源码之家个映射联络的 XML,LitePa源码年代训练怎样样l 的全部映开源是什么意思射都是主动完毕的。依据 LitePal 的数据类型支撑,能够进行政策联络映射的数据类型一共有 8 种,int、short、long、float、dou程序员客栈ble、boolean、String 和 Date。只需是声明成这 8 种数据类型的字段都会被主动映射到数据库表中,并不需求进行开源软件任何额定的装备。
现在模型类现已mysql装置建好了,咱们还差最后一步,便是将它装备到映射列表傍边。修正 assets 目录下的 litepal.xml 文件,在 标签中参与 News 模型类的声明:
<?xml version="1.0" encoding="utf-8"?>
<dbname value="demo" >MySQL;</dbname>
<verGitHubsion value="1" ></version>
<mysql面试题mapping class="com.example.databasetest.model.News"></mapping>
留心这儿必定要填入 News 类的无缺类名。
OK,这样全部的作业就都现已完毕了,github是干什么的现在只需你对数据库有任何的操作,news 表就会被主动创立出来。比方说 LitePal 供给了一个便利的办法来获取到 SQLiteDatabaMySQLse 的实例,如下所示:
SQLiteDatabase db = Connector.getDatabase();
调用一下上述代码,news 表就应github官网该现已创立成功了。咱们运用在上一篇文章中学到的 SQLite 指令来查看一下,翻开 demo.db 数据库,输入. table 指令,成果如下图所示:
能够看到,news 表现已存在了。其他两张 android_metadata 和 tamysql装置ble_schema 表是主动生成的,咱们不必理。接下来咱们还能够再查询一下 news 表的建表句子,如下图所示:
这便是 LitePal 依据 News 类中的字段主动帮咱们生成的建表句子,由此源码年代训练怎样样也阐明,建表操作程序员客栈现已成功完毕源码是什么意思了。
好了,到现在为止你现已算是对 LitePal 的用法有点入门了,那么本篇文章的内容就到这儿,下篇文章傍边咱们将学习运用 LitePal 进行晋级表的操作。