精华内容
下载资源
问答
  • 我们也可以将数据库理解为一个电子版文件柜,用户可以通过计算机操作对文件柜中所存放文件进行新增,查询,更改,删除等操作。 什么是数据库管理系统? 数据库管理系统(Database Management System 简称为DBMS .....

    什么是数据库?

    数据库其英文名称为(database)简称为DB,其是一种以以一定方式存储在一起,能与多个用户共享,具有尽可能小的冗余度,与应用程序彼此独立的数据集合。我们也可以将数据库理解为一个电子版文件柜,用户可以通过计算机操作对文件柜中所存放的文件进行新增,查询,更改,删除等操作。

    什么是数据库管理系统?

    数据库管理系统(Database Management System 简称为DBMS ),它是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系用可以依据它所支持的数据库模型来作以分类,也可依据所支持的计算机类型来做分类,也可依据所用的查询语言来进行分类,分类方式可以选择很多,但是,无论我们使用哪种分类方式,我们要知道,一些DBMS是可以支持跨类别的,例如一些数据库管理系统就支持多种语言查询。

    当下流行的一些数据库的分类

    关系型数据库 非关系型数据库
    MySQL BigTable(google)
    PostgerSQL Cassandra
    Microsoft SQL server mongoDB
    Oracel couchDB
    Sybase Apache Cassandra
    dBASE Dynamo
    foshub LevelDB

    可见我们学习的这个MySQL是一种典型的关系型数据库

    数据库模型

    • 对象模型
    • 层次模型(轻量级数据访问协议)
    • 网状模型(大型数据存储)
    • 关系模型
    • 面向对象模型
    • 半结构化模型
    • 平面模型(表格模型,一般在形式上是一个二维数组)

    数据库的架构

    数据库的架构大致可以分为三个概括层次:内层,概念层和外层。

    • 内层:最接近实际的存储体,就是有关数据的真实存储方式。
    • 外层:最接近用户,就是用户查看数据的方式。
    • 概念层:介于两者之间的间接层。

    MySQL数据库简介

    MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。

    MySQL的安装及连接

    具体步骤为:
    1.下载得到MySQL的安装压缩包 下载官网 : https://www.mysql.com/
    得到一个这样子的安装包后选择好解压
    得到一个这样子的安装包后选择好解压
    2.解压好之后将文件bin目录的路径添加到系统的环境变量path中

    在这里插入图片描述
    在这里插入图片描述
    桌面上右键“我的电脑”选择属性,点击“高级系统设置”
    在这里插入图片描述

    打开后选择环境变量
    在这里插入图片描述

    双击系统变量中的path
    在这里插入图片描述
    之后选择新建,粘贴复制的路径
    在这里插入图片描述
    在bin目录的上级目录新建文件"my.ini",文件编辑以下内容后保存(注意文件保存时的编码格式一定要是ANSI,这个在保存的时候有提示)。

    		 [mysqld]
    		 basedir=D:\Program Files\mysql-5.7\    //等号后面的内容就是你自己的解压路径
    		 datadir=D:\Program Files\mysql-5.7\data\     //等号后面的内容就是你自己的解压路径
    		 port=3306
    		 skip-grant-tables
    

    3.然后在运行框输入cmd,右键点击程序选择以管理员身份打开命令窗口(否则之后对MySQL的指令会回复MySQL拒绝访问)将路径切换至mysql下的bin目录(这里是使用dos命令来进行操作),然后输入mysqld –install (安装mysql)
    再输入 mysqld --initialize-insecure --user=mysql 初始化数据文件
    4.然后使用命令 net start mysql启动mysql 然后用命令 mysql –uroot –p 进入mysql管理界面(密码可为空)
    5.进入界面后输入语句:update mysql.user set authentication_string=password(‘123456’) where user=‘root’ and Host = ‘localhost’; 这里我们是将登陆连接MySQL的密码改成了123456
    6.修改完成后,在输入 flush privileges; 刷新权限。
    7.将刚才的my.ini文件内的最后一句“skip-grant-tables”删除后保存文件。
    8. 输入 exit 退出Mysql。
    9.输入 net stop mysql 终止mysql服务。
    9.重启 MySQL 同样的我们以管理元 身份打开命令窗口,然后输 net start mysql
    10.重启MySQL,然后使用命令 mysql -uroot -p123456 就可以成功进入MySQL服务。
    最终成功显示页面
    在这里插入图片描述

    安装MySQL其实类同于安装其他的一些软件编译工具一般,大致过程都是解压压缩包,然后配置环境变量,最后校验登陆。当然过程本身没有任何的难度,关键问题是如果在安装过程中根据个人不同会遇到各种各样的其他问题,比如说,有的个人电脑少了一些驱动,需要补丁修复,有的安装时重复安装,服务无法启动此类问题。这些问题,基本上在网络问答上都有解决,我建议是遇到问题首先核对自己的操作是否符合流程,以及内容有没有疏忽遗漏,检查无误在考虑其他的因素。当然,一般时么有问题的啦。

    mysql命令操作

    首先我们试一下几个最简单的命令操作:

    update user set password=password('123456')where user='root'; 修改密码
    flush privileges;  刷新数据库
    show databases; 显示所有数据库
    use dbname; 打开某个数据库
    show tables; 显示数据库mysql中所有的表
    describe user; 显示表mysql数据库中user表的列信息
    create database name; 创建数据库
    use databasename; 选择数据库
    
    exit; 退出Mysql
    ? 命令关键词 : 寻求帮助
    # 表示注释
    

    这些命令都可以在命令窗口直接输入,回车后即可执行,保证输入的命令正确,则可以执行指令。
    接下来我们可以通过以上指令来进行一个名为class的数据库名称创建,然后还需要在此数据库中创建一个一个student表,里面有三列,记录上学生的姓名和性别以及年龄,这是一个最为简单的数据库中的表的创建。
    创建数据库,库名为class
    在这里插入图片描述
    这样我们就成功创建了一个新的数据库,但这个数据库里什么数据表都没有,目前就是一个空的数据库;所以我们现在创建一个数据表将并将其放入该数据库;
    创建数据表的语句

    create table [if not exists] `表名`(
        '字段名1' 列类型 [属性][索引][注释],
        '字段名2' 列类型 [属性][索引][注释],
        #...
        '字段名n' 列类型 [属性][索引][注释]
    )[表类型][表字符集][注释];
    

    1.字段名表示的就是你所要创建的数据表的每列的列名称。
    2.列类型用来规定该列所存数据的数据类型,SQL语句中的数据类型大致可以分为四大类

    • 数值类型
    类型 说明 存储需求
    tinyint 非常小的数据 1字节
    smallint 较小的数据 2字节
    mediumint 中等大小的数据 3字节
    int 标准整数 4字节
    bigint 较大的整数 8字节
    float 单精度浮点数 4字节
    double 双精度浮点数 8字节
    decimal 字符串形式的浮点数 m个字节
    • 字符串类型
    类型 说明 最大长度
    char(M) 固定长度的字符串,检索快,但费空间(M<=225) M字符
    varchar(M) 可变字符串(M<=65535) 可变长度,长度值可以小于等于M
    tinytext 微型文本串 1023字节
    text 文本串 1048575字节
    • 日期和时间型数值类型
    类型 说明 取值范围
    DATE YYYY-MM-DD,日期格式 1000-01-01~9999-12-31
    TIME hh:mm:ss,时间格式 -838:59:59~838:59:59
    DATETIME YY-MM-DD hh:mm:ss 1001-01-01 00:00:00至9999-12-31 23:59:59
    TIMESTAMP YYYYMMDDhhmmss格式表示的时间戳 197010101000000~2037年的某个时刻
    YEAR YYYY格式的年份值 1901~2155
    • NULL值(就是么有值或者是未知值,注意不要用NULL进行算术运算,运算结果仍然为NULL)
      3.数据字段属性
    属性名称 属性作用
    UnSigned 无符号的,声明该数据列不允许负数
    ZEROFILL 0填充的,不足位数用0来进行填充
    Auto_InCrement 自动增长的,每添加一条数据,自动在上一个记录数上加1,通常用于设置主键,且为整数类型,单也可定义起始值和设置步长(AUTO_INCREMENT=100)此类设置只影响当前表;SET @@AUTO_INCREMENT_INCREMENT=100;影响所有使用自增的表(此步长值使用到全局的表)
    NULL和NOT NULL 默认值为NULL,即没有插入该列的数值,如果设置为 NOT NULL 则该列必须有值
    DEFAULT 默认的,用于设置该列的默认值

    接下来我们就要在之前创建的class数据库中加入一个数据表了
    先选中数据库class,我们要先进入这个数据库
    在这里插入图片描述
    然后开始创建我们想要表的结构
    在这里插入图片描述
    输入 DESC student; 查看表的结构
    在这里插入图片描述
    并且这里我们注意在创建表的结构的时候,最后一行的指令
    ENGINE=InnoDB DEFUALT CHARSET=utf8
    这两句指令是明确了数据表的类型(也就是该表的引擎类型),数据表类型可以分为MyISAM , InnoDB , HEAP , BOB , CSV等…常见的 MyISAM 与 InnoDB 类型

    名称 MyISAM InnoDB
    事务处理 不支持 支持
    数据行锁定 不支持 支持
    外键约束 不支持 支持
    全文索引 支持 不支持
    表空间大小 较小 较大,约两倍

    适用场合:

    • 适用MyISAM : 节约空间及相应速度
    • 适用InnoDB : 安全性 , 事务处理及多用户操作数据表
      数据表的存储位置 :
      MySQL数据表以文件方式存放在磁盘中
      包括表文件 , 数据文件 , 以及数据库的选项文件
      位置 : Mysql安装目录\data\下存放数据表 . 目录名对应数据库名 , 该目录下文件名对应数据表 .
      注意 :
      InnoDB类型数据表只有一个 *.frm文件 , 以及上一级目录的ibdata1文件
      MyISAM类型数据表对应三个文件 :
    • . frm – 表结构定义文件
    • . MYD – 数据文件(data)
    • . MYI – 索引文件(index)
      在这里插入图片描述
      接下来我们可以对我们的表进行一些小修改,比如说我们现在还想知道学生的个人电话号码,这就得我们往已有的表里添加一个字段,这里,我们使用ALTER 语句进行操作;
      修改表( ALTER TABLE )
    • 修改表名 :
      ALTER TABLE 旧表名 RENAME AS 新表名
    • 添加字段 :
      ALTER TABLE 表名 ADD字段名 列属性[属性]
    • 修改字段 :
      ALTER TABLE 表名 MODIFY 字段名 列类型[属性]
      ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列属性[属性]
    • 删除字段 :
      ALTER TABLE 表名 DROP 字段名
      这里我们通过指令来添加字段:
      在这里插入图片描述
      再看看表的结构:
      在这里插入图片描述
      可见我们添加成功了;
    展开全文
  • 第四章 创建数据库的基本操作 1.首先登陆是登陆数据库 创建数据库命令 MySQL -u 用户名 -p密码 实例 MySQL -u root -proot `` 这样你就成功登陆MySQL了 。 2. 创建数据库的操作 数据库的语法 create database...

    第四章 创建数据库的基本操作

    1.首先登陆是登陆数据库

    • . 创建数据库命令
      MySQL -u 用户名 -p密码

    • . 实例
      MySQL -u root -proot
      ``在这里插入图片描述
      这样你就成功登陆MySQL了 。

    2. 创建数据库的操作

    • 数据库的语法
      create database 数据库名字
    • 实例
      create database db1;
      在这里插入图片描述
      这样你就创建成功了,你就拥有了你的一个数据库db1。

    3.显示你创建的数据库

    • 显示数据库的语法
       show databases;
    
    • 实例
      show databases;
    

    在这里插入图片描述
    上边就是你创建的数据库,其余的是你安装MySQL的时候,它自己就有的数据库,里边装着一些MySQL应用的东西。

    4.指定使用数据库

    • 指定使用数据库语法
      use 库名;
    • ** 实例**
       use db1;
    

    在这里插入图片描述
    这样你就选择了你刚才创建的数据库了,注意使用MySQL之前一定要选择你的数据库,要不然会报错

    5.关于表的使用表

    • 1.创建表的语法
      create table 表名 (列名 数据类型,…) ;
    • 实例
       mysql> create table tb1(empid varchar(10),name varchar(10),age int(10));
       //你也可以指定字符编码来创建一个表
          mysql> create table tb1(empid varchar(10),name varchar(10),age int(10)) charset=UTF8;
    

    在这里插入图片描述
    这样你就创建了一个表了

    2.显示你创建的表

       show tables;
    


    这样你就可以看到你的表了
    3.显示你的表的结构

        desc tb1;
    

    在这里插入图片描述
    4.给表插入数据的语法
    insert into 表明 (列名,列名,…) values(数据1,shuju2,…);

    实例

     insert into tb1 values('A101','佐藤',40);
    

    在这里插入图片描述
    这样你就把数据插进去了,你可以用键盘上键可以重复插入。

    • 你也可以通过导入文件的方式进行导入,但是现在不建议大家现在去用,因为你没有做相应的配置
    • 现在只作为了解看看就行,后期会写到
        mysql> load data infile 'C:/ch3/t.csv' into table tb1 fields terminated by  ',';
    

    用这种方法你需要在记事本里写上相关信息,每个信息用逗号隔开,后缀应该改为.csv

    在这里插入图片描述
    插入信息后的图片
    在这里插入图片描述

    5.显示表里的数据

    • 显示数据的语法
      select 列名1,列名2,…from 表名
    • 实例
    • select * from tb1
      注意:这里的* 表示选择所有的列值
      在这里插入图片描述
      6.复制表
    • 复制表的语句
      create table 新的表名 create 列名 from 复制表的表名
      ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210401103721172.png
    • 实例
    mysql> create table tb1A select * from tb1;
    

    在这里插入图片描述
    查看之后我们的确复制了tb1表格的内容
    在这里插入图片描述

    展开全文
  • Android创建数据表和LitePal的基本用法

    千次阅读 2014-12-31 23:45:40
    并且感谢guolin分享了这么精彩博文。以下正文: 上一篇文章中我们学习了一些Android数据库相关基础知识,和几个颇为...但是我们都知道,数据库是要和程序结合在一起使用,单独对一个数据库去进行増删改查操作并

    本文属于转载,在此声明,出处:http://blog.csdn.net/guolin_blog/article/details/38556989

    并且感谢guolin分享了这么精彩的博文。以下正文:

    上一篇文章中我们学习了一些Android数据库相关的基础知识,和几个颇为有用的SQLite命令,都是直接在命令行操作的。但是我们都知道,数据库是要和程序结合在一起使用的,单独对一个数据库去进行増删改查操作并没有什么意义,因此今天我们就来学习一下如何在Android程序当中去操作SQLite数据库,还没看过前一篇文章的朋友可以先去参考 Android数据库高手秘籍(一)——SQLite命令 。

    操作数据库的第一步当然是创建表了,传统创建表的方法相信大多数人都知道,那么今天我除了会展示传统的建表方法之外,还会讲解LitePal这个框架的基本用法,并使用它来完成同样的建表操作,让大家体会到使用框架来操作数据库的魅力。

    那么先来简单介绍一下吧,LitePal是一款开源的Android数据库框架,它采用了对象关系映射(ORM)的模式,并将我们平时开发时最常用到的一些数据库功能进行了封装,使得不用编写一行SQL语句就可以完成各种建表、増删改查的操作。并且LitePal很“轻”,jar包只有100k不到,而且近乎零配置,这一点和Hibernate这类的框架有很大区别。目前LitePal的源码已经托管到了GitHub上,地址是 https://github.com/LitePalFramework/LitePal 。

    OK,简单介绍完了LitePal,我们还是先来看一下,在传统的Android开发中,需要怎么去创建表。

    传统的建表方式

    其实为了方便我们对数据库表进行管理,Android本身就提供了一个帮助类:SQLiteOpenHelper。这个类集创建和升级数据库于一身,并且自动管理了数据库版本,算是一个非常好用的工具。

    那我们现在就来试试SQLiteOpenHelper的用法吧。首先你要知道SQLiteOpenHelper是一个抽象类,这意味着如果我们想要使用它的话,就需要创建一个自己的帮助类去继承它。SQLiteOpenHelper中有两个抽象方法,分别是onCreate()和onUpgrade(),我们必须在自己的帮助类里面重写这两个方法,然后分别在这两个方法中去实现创建、升级数据库的逻辑。本篇文章只需要把注意力放在创建数据库这里就行了,升级数据库我们会在下一篇文章中去讨论。

    新建一个MySQLiteHelper类并让它继承SQLiteOpenHelper,这样一个最基本的数据库帮助类的代码如下所示:

    [java] view plaincopy
    1. public class MySQLiteHelper extends SQLiteOpenHelper {  
    2.   
    3.     public MySQLiteHelper(Context context, String name, CursorFactory factory,  
    4.             int version) {  
    5.         super(context, name, factory, version);  
    6.     }  
    7.   
    8.     @Override  
    9.     public void onCreate(SQLiteDatabase db) {  
    10.     }  
    11.   
    12.     @Override  
    13.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
    14.     }  
    15.   
    16. }  
    其中,当数据库创建的时候会调用onCreate()方法,在这里去执行建表操作就可以了。比如说我们想新建一张news表,其中有title,content,publishdate,commentcount这几列,分别代表着新闻标题、新闻内容、发布时间和评论数,那么代码就可以这样写:
    [java] view plaincopy
    1. public class MySQLiteHelper extends SQLiteOpenHelper {  
    2.       
    3.     public static final String CREATE_NEWS = "create table news ("  
    4.             + "id integer primary key autoincrement, "  
    5.             + "title text, "  
    6.             + "content text, "  
    7.             + "publishdate integer,"  
    8.             + "commentcount integer)";  
    9.   
    10.     public MySQLiteHelper(Context context, String name, CursorFactory factory,  
    11.             int version) {  
    12.         super(context, name, factory, version);  
    13.     }  
    14.   
    15.     @Override  
    16.     public void onCreate(SQLiteDatabase db) {  
    17.         db.execSQL(CREATE_NEWS);  
    18.     }  
    19.     ...  
    20. }  
    可以看到,我们把建表语句定义成了一个常量,然后在onCreate()方法中去执行了这条建表语句,news表也就创建成功了。这条建表语句虽然简单,但是里面还是包含了一些小的细节,我来解释一下。首先,根据数据库的范式要求,任何一张表都应该是有主键的,所以这里我们添加了一个自增长的id列,并把它设为主键。然后title列和content列都是字符串类型的,commentcount列是整型的,这都很好理解,但是publishdate列该怎么设计呢?由于SQLite中并不支持存储日期这种数据类型,因此我们需要将日期先转换成UTC时间(自1970年1月1号零点)的毫秒数,然后再存储到数据库中,因此publishdate列也应该是整型的。

    现在,我们只需要获取到SQLiteDatabase的实例,数据库表就会自动创建了,如下所示:

    [java] view plaincopy
    1. SQLiteOpenHelper dbHelper = new MySQLiteHelper(this"demo.db"null1);  
    2. SQLiteDatabase db = dbHelper.getWritableDatabase();  

    感觉很简单很方便是吗?那你就太容易满足了,下面我们就来学习一下LitePal的基本用法,看一看使用这个框架是如何实现同样的功能的。

    LitePal的基本用法

    虽说LitePal宣称是近乎零配置,但也只是“近乎”而已,它还是需要进行一些简单配置才可以使用的,那么我们第一步就先快速学习一下LitePal的配置方法。

    快速配置

    1. 引入Jar包或源码

    首先我们需要将LitePal的jar包引入到项目当中,可以点击这里查看LitePal的最新版本,选择你需要的下载即可。下载好了jar包之后,把它复制到项目的libs目录中就算是引入成功了,如下图所示:


    如果你不想用jar包的话,也可以把LitePal的源码下载下来,然后作为一个library库导入到Eclipse当中,再让我们的项目去引用这个library库就可以了。

    2. 配置litepal.xml

    接着在项目的assets目录下面新建一个litepal.xml文件,并将以下代码拷贝进去:

    [html] view plaincopy
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <litepal>  
    3.     <dbname value="demo" ></dbname>  
    4.   
    5.     <version value="1" ></version>  
    6.   
    7.     <list>  
    8.     </list>  
    9. </litepal>  
    配置文件相当简单,<dbname>用于设定数据库的名字,<version>用于设定数据库的版本号,<list>用于设定所有的映射模型,我们稍后就会用到。

    3. 配置LitePalApplication

    由于操作数据库时需要用到Context,而我们显然不希望在每个接口中都去传一遍这个参数,那样操作数据库就显得太繁琐了。因此,LitePal使用了一个方法来简化掉Context这个参数,只需要在AndroidManifest.xml中配置一下LitePalApplication,所有的数据库操作就都不用再传Context了,如下所示:

    [html] view plaincopy
    1. <manifest>  
    2.     <application  
    3.         android:name="org.litepal.LitePalApplication"  
    4.         ...  
    5.     >  
    6.     ...  
    7.     </application>  
    8. </manifest>  
    当然,有些程序可能会有自己的Application,并在这里配置过了。比如说有一个MyApplication,如下所示:
    [html] view plaincopy
    1. <manifest>  
    2.     <application  
    3.         android:name="com.example.MyApplication"  
    4.         ...  
    5.     >  
    6.     ...  
    7.     </application>  
    8. </manifest>  
    没有关系,这时只需要修改一下MyApplication的继承结构,让它不要直接继承Application类,而是继承LitePalApplication类,就可以使用一切都能正常工作了,代码如下所示:
    [java] view plaincopy
    1. public class MyApplication extends LitePalApplication {  
    2.     ...  
    3. }  

    但是,有些程序可能会遇到一些更加极端的情况,比如说MyApplication需要继承另外一个AnotherApplication,并且这个AnotherApplication还是在jar包当中的,不能修改它的代码。这种情况应该算是比较少见了,但是如果你遇到了的话也不用急,仍然是有解释方案的。你可以把LitePal的源码下载下来,然后把src目录下的所有代码直接拷贝到你项目的src目录下面,接着打开LitePalApplication类,将它的继承结构改成继承自AnotherApplication,再让MyApplication继承自LitePalApplication,这样所有的Application就都可以在一起正常工作了。

    仅仅三步,我们就将所有的配置工作全部完成了,并且这是一件一本万利的事情,自此以后,你就可以开心地体验LitePal提供的各种便利了,就让我们从建表开始吧。

    开始建表

    前面在介绍的时候已经说了,LitePal采取的是对象关系映射(ORM)的模式,那么什么是对象关系映射呢?简单点说,我们使用的编程语言是面向对象语言,而我们使用的数据库则是关系型数据库,那么将面向对象的语言和面向关系的数据库之间建立一种映射关系,这就是对象关系映射了。

    但是我们为什么要使用对象关系映射模式呢?这主要是因为大多数的程序员都很擅长面向对象编程,但其中只有少部分的人才比较精通关系型数据库。而且数据库的SQL语言晦涩难懂,就算你很精通它,恐怕也不喜欢经常在代码中去写它吧?而对象关系映射模式则很好地解决了这个问题,它允许我们使用面向对象的方式来操作数据库,从而可以从晦涩难懂的SQL语言中解脱出来。

    那么接下来我们就看一看LitePal中是如何建表的吧。根据对象关系映射模式的理念,每一张表都应该对应一个模型(Model),也就是说,如果我们想要建一张news表,就应该有一个对应的News模型类。新建一个News类,如下所示:

    [java] view plaincopy
    1. package com.example.databasetest.model;  
    2.   
    3. public class News {  
    4. }  
    然后,表中的每一列其实就是对应了模型类中的一个字段,比如news表中有id、title、content、publishdate、commentcount这几个列,那么在News类中就也应该有这几个字段,代码如下所示:
    [java] view plaincopy
    1. public class News {  
    2.       
    3.     private int id;  
    4.       
    5.     private String title;  
    6.       
    7.     private String content;  
    8.       
    9.     private Date publishDate;  
    10.       
    11.     private int commentCount;  
    12.       
    13.     // 自动生成get、set方法  
    14.     ...  
    15. }  
    其中id这个字段可写可不写,因为即使不写这个字段,LitePal也会在表中自动生成一个id列,毕竟每张表都一定要有主键的嘛。

    这里我要特别说明一下,LitePal的映射规则是非常轻量级的,不像一些其它的数据库框架,需要为每个模型类单独配置一个映射关系的XML,LitePal的所有映射都是自动完成的。根据LitePal的数据类型支持,可以进行对象关系映射的数据类型一共有8种,int、short、long、float、double、boolean、String和Date。只要是声明成这8种数据类型的字段都会被自动映射到数据库表中,并不需要进行任何额外的配置。

    那么有的朋友可能会问了,既然是自动映射的话,如果News类中有一个字符串字段我并不想让它映射到数据库表中,这该怎么办呢?对此,LitePal同样采用了一种极为轻量的解决方案,只有声明成private修饰符的字段才会被映射到数据库表中,如果你有某一个字段不想映射的话,只需要将它改成public、protected或default修饰符就可以了。

    现在模型类已经建好了,我们还差最后一步,就是将它配置到映射列表当中。编辑assets目录下的litepal.xml文件,在<list>标签中加入News模型类的声明:

    [html] view plaincopy
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <litepal>  
    3.     <dbname value="demo" ></dbname>  
    4.   
    5.     <version value="1" ></version>  
    6.   
    7.     <list>  
    8.         <mapping class="com.example.databasetest.model.News"></mapping>  
    9.     </list>  
    10. </litepal>  
    注意这里一定要填入News类的完整类名。

    OK,这样所有的工作就都已经完成了,现在只要你对数据库有任何的操作,news表就会被自动创建出来。比如说LitePal提供了一个便捷的方法来获取到SQLiteDatabase的实例,如下所示:

    [java] view plaincopy
    1. SQLiteDatabase db = Connector.getDatabase();  
    调用一下上述代码,news表就应该已经创建成功了。我们使用在上一篇文章中学到的SQLite命令来查看一下,打开demo.db数据库,输入.table命令,结果如下图所示:


    可以看到,news表已经存在了。另外两张android_metadata和table_schema表是自动生成的,我们不用理。接下来我们还可以再查询一下news表的建表语句,如下图所示:


    这就是LitePal根据News类中的字段自动帮我们生成的建表语句,由此也说明,建表操作已经成功完成了。

    好了,到目前为止你已经算是对LitePal的用法有点入门了,那么本篇文章的内容就到这里,下篇文章当中我们将学习使用LitePal进行升级表的操作。感兴趣的朋友请继续阅读 Android数据库高手秘籍(三)——使用LitePal升级表 。

    LitePal开源项目地址:

    https://github.com/LitePalFramework/LitePal

    展开全文
  • 篇文章中我们学习了一些...传统创建表的方法相信大多数人都知道,那么今天我除了会展示传统的建表方法之外,还会讲解LitePal这框架的基本用法,并使用它来完成同样的建表操作,让大家体会到使用框架来操作数据

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/38556989


    上一篇文章中我们学习了一些Android数据库相关的基础知识,和几个颇为有用的SQLite命令,都是直接在命令行操作的。但是我们都知道,数据库是要和程序结合在一起使用的,单独对一个数据库去进行増删改查操作并没有什么意义,因此今天我们就来学习一下如何在Android程序当中去操作SQLite数据库,还没看过前一篇文章的朋友可以先去参考 Android数据库高手秘籍(一)——SQLite命令 。


    操作数据库的第一步当然是创建表了,传统创建表的方法相信大多数人都知道,那么今天我除了会展示传统的建表方法之外,还会讲解LitePal这个框架的基本用法,并使用它来完成同样的建表操作,让大家体会到使用框架来操作数据库的魅力。


    那么先来简单介绍一下吧,LitePal是一款开源的Android数据库框架,它采用了对象关系映射(ORM)的模式,并将我们平时开发时最常用到的一些数据库功能进行了封装,使得不用编写一行SQL语句就可以完成各种建表、増删改查的操作。并且LitePal很“轻”,jar包只有100k不到,而且近乎零配置,这一点和Hibernate这类的框架有很大区别。目前LitePal的源码已经托管到了GitHub上,地址是 https://github.com/LitePalFramework/LitePal 。


    OK,简单介绍完了LitePal,我们还是先来看一下,在传统的Android开发中,需要怎么去创建表。


    传统的建表方式


    其实为了方便我们对数据库表进行管理,Android本身就提供了一个帮助类:SQLiteOpenHelper。这个类集创建和升级数据库于一身,并且自动管理了数据库版本,算是一个非常好用的工具。


    那我们现在就来试试SQLiteOpenHelper的用法吧。首先你要知道SQLiteOpenHelper是一个抽象类,这意味着如果我们想要使用它的话,就需要创建一个自己的帮助类去继承它。SQLiteOpenHelper中有两个抽象方法,分别是onCreate()和onUpgrade(),我们必须在自己的帮助类里面重写这两个方法,然后分别在这两个方法中去实现创建、升级数据库的逻辑。本篇文章只需要把注意力放在创建数据库这里就行了,升级数据库我们会在下一篇文章中去讨论。


    新建一个MySQLiteHelper类并让它继承SQLiteOpenHelper,这样一个最基本的数据库帮助类的代码如下所示:

    public class MySQLiteHelper extends SQLiteOpenHelper {
    
    	public MySQLiteHelper(Context context, String name, CursorFactory factory,
    			int version) {
    		super(context, name, factory, version);
    	}
    
    	@Override
    	public void onCreate(SQLiteDatabase db) {
    	}
    
    	@Override
    	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    	}
    
    }
    其中,当数据库创建的时候会调用onCreate()方法,在这里去执行建表操作就可以了。比如说我们想新建一张news表,其中有title,content,publishdate,commentcount这几列,分别代表着新闻标题、新闻内容、发布时间和评论数,那么代码就可以这样写:
    public class MySQLiteHelper extends SQLiteOpenHelper {
    	
    	public static final String CREATE_NEWS = "create table news ("
    			+ "id integer primary key autoincrement, "
    			+ "title text, "
    			+ "content text, "
    			+ "publishdate integer,"
    			+ "commentcount integer)";
    
    	public MySQLiteHelper(Context context, String name, CursorFactory factory,
    			int version) {
    		super(context, name, factory, version);
    	}
    
    	@Override
    	public void onCreate(SQLiteDatabase db) {
    		db.execSQL(CREATE_NEWS);
    	}
        ...
    }

    可以看到,我们把建表语句定义成了一个常量,然后在onCreate()方法中去执行了这条建表语句,news表也就创建成功了。这条建表语句虽然简单,但是里面还是包含了一些小的细节,我来解释一下。首先,根据数据库的范式要求,任何一张表都应该是有主键的,所以这里我们添加了一个自增长的id列,并把它设为主键。然后title列和content列都是字符串类型的,commentcount列是整型的,这都很好理解,但是publishdate列该怎么设计呢?由于SQLite中并不支持存储日期这种数据类型,因此我们需要将日期先转换成UTC时间(自1970年1月1号零点)的毫秒数,然后再存储到数据库中,因此publishdate列也应该是整型的。


    现在,我们只需要获取到SQLiteDatabase的实例,数据库表就会自动创建了,如下所示:

    SQLiteOpenHelper dbHelper = new MySQLiteHelper(this, "demo.db", null, 1);
    SQLiteDatabase db = dbHelper.getWritableDatabase();

    感觉很简单很方便是吗?那你就太容易满足了,下面我们就来学习一下LitePal的基本用法,看一看使用这个框架是如何实现同样的功能的。


    LitePal的基本用法


    虽说LitePal宣称是近乎零配置,但也只是“近乎”而已,它还是需要进行一些简单配置才可以使用的,那么我们第一步就先快速学习一下LitePal的配置方法。


    快速配置


    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"?>
    <litepal>
        <dbname value="demo" ></dbname>
    
        <version value="1" ></version>
    
        <list>
        </list>
    </litepal>

    配置文件相当简单,<dbname>用于设定数据库的名字,<version>用于设定数据库的版本号,<list>用于设定所有的映射模型,我们稍后就会用到。


    3. 配置LitePalApplication

    由于操作数据库时需要用到Context,而我们显然不希望在每个接口中都去传一遍这个参数,那样操作数据库就显得太繁琐了。因此,LitePal使用了一个方法来简化掉Context这个参数,只需要在AndroidManifest.xml中配置一下LitePalApplication,所有的数据库操作就都不用再传Context了,如下所示:

    <manifest>
        <application
            android:name="org.litepal.LitePalApplication"
            ...
        >
        ...
        </application>
    </manifest>
    当然,有些程序可能会有自己的Application,并在这里配置过了。比如说有一个MyApplication,如下所示:
    <manifest>
        <application
            android:name="com.example.MyApplication"
            ...
        >
        ...
        </application>
    </manifest>
    没有关系,这时只需要修改一下MyApplication的继承结构,让它不要直接继承Application类,而是继承LitePalApplication类,就可以使用一切都能正常工作了,代码如下所示:
    public class MyApplication extends LitePalApplication {
        ...
    }

    但是,有些程序可能会遇到一些更加极端的情况,比如说MyApplication需要继承另外一个AnotherApplication,并且这个AnotherApplication还是在jar包当中的,不能修改它的代码。这种情况应该算是比较少见了,但是如果你遇到了的话也不用急,仍然是有解释方案的。你可以把LitePal的源码下载下来,然后把src目录下的所有代码直接拷贝到你项目的src目录下面,接着打开LitePalApplication类,将它的继承结构改成继承自AnotherApplication,再让MyApplication继承自LitePalApplication,这样所有的Application就都可以在一起正常工作了。


    仅仅三步,我们就将所有的配置工作全部完成了,并且这是一件一本万利的事情,自此以后,你就可以开心地体验LitePal提供的各种便利了,就让我们从建表开始吧。


    开始建表


    前面在介绍的时候已经说了,LitePal采取的是对象关系映射(ORM)的模式,那么什么是对象关系映射呢?简单点说,我们使用的编程语言是面向对象语言,而我们使用的数据库则是关系型数据库,那么将面向对象的语言和面向关系的数据库之间建立一种映射关系,这就是对象关系映射了。


    但是我们为什么要使用对象关系映射模式呢?这主要是因为大多数的程序员都很擅长面向对象编程,但其中只有少部分的人才比较精通关系型数据库。而且数据库的SQL语言晦涩难懂,就算你很精通它,恐怕也不喜欢经常在代码中去写它吧?而对象关系映射模式则很好地解决了这个问题,它允许我们使用面向对象的方式来操作数据库,从而可以从晦涩难懂的SQL语言中解脱出来。


    那么接下来我们就看一看LitePal中是如何建表的吧。根据对象关系映射模式的理念,每一张表都应该对应一个模型(Model),也就是说,如果我们想要建一张news表,就应该有一个对应的News模型类。新建一个News类,如下所示:

    package com.example.databasetest.model;
    
    public class News {
    }
    然后,表中的每一列其实就是对应了模型类中的一个字段,比如news表中有id、title、content、publishdate、commentcount这几个列,那么在News类中就也应该有这几个字段,代码如下所示:
    public class News {
    	
    	private int id;
    	
    	private String title;
    	
    	private String content;
    	
    	private Date publishDate;
    	
    	private int commentCount;
    	
    	// 自动生成get、set方法
    	...
    }

    其中id这个字段可写可不写,因为即使不写这个字段,LitePal也会在表中自动生成一个id列,毕竟每张表都一定要有主键的嘛。


    这里我要特别说明一下,LitePal的映射规则是非常轻量级的,不像一些其它的数据库框架,需要为每个模型类单独配置一个映射关系的XML,LitePal的所有映射都是自动完成的。根据LitePal的数据类型支持,可以进行对象关系映射的数据类型一共有8种,int、short、long、float、double、boolean、String和Date。只要是声明成这8种数据类型的字段都会被自动映射到数据库表中,并不需要进行任何额外的配置。


    现在模型类已经建好了,我们还差最后一步,就是将它配置到映射列表当中。编辑assets目录下的litepal.xml文件,在<list>标签中加入News模型类的声明:

    <?xml version="1.0" encoding="utf-8"?>
    <litepal>
        <dbname value="demo" ></dbname>
    
        <version value="1" ></version>
    
        <list>
            <mapping class="com.example.databasetest.model.News"></mapping>
        </list>
    </litepal>

    注意这里一定要填入News类的完整类名。


    OK,这样所有的工作就都已经完成了,现在只要你对数据库有任何的操作,news表就会被自动创建出来。比如说LitePal提供了一个便捷的方法来获取到SQLiteDatabase的实例,如下所示:

    SQLiteDatabase db = Connector.getDatabase();

    调用一下上述代码,news表就应该已经创建成功了。我们使用在上一篇文章中学到的SQLite命令来查看一下,打开demo.db数据库,输入.table命令,结果如下图所示:




    可以看到,news表已经存在了。另外两张android_metadata和table_schema表是自动生成的,我们不用理。接下来我们还可以再查询一下news表的建表语句,如下图所示:




    这就是LitePal根据News类中的字段自动帮我们生成的建表语句,由此也说明,建表操作已经成功完成了。


    好了,到目前为止你已经算是对LitePal的用法有点入门了,那么本篇文章的内容就到这里,下篇文章当中我们将学习使用LitePal进行升级表的操作。感兴趣的朋友请继续阅读 Android数据库高手秘籍(三)——使用LitePal升级表 。


    关注我的技术公众号,每天都有优质技术文章推送。关注我的娱乐公众号,工作、学习累了的时候放松一下自己。

    微信扫一扫下方二维码即可关注:

            

    展开全文
  • 现在数据库工具很多,无论...创建一个数据表,这里面肯定有数据表名、字段、字段类型以及长度,基本就这些,这里我假设数据表名为dobunkan_a,字段有id、name、tel三个字段,我们先用sqlserver命令创建这个表。CREAT...
  • 四、创建数据表

    2020-05-11 15:37:13
    创建数据表需要制定表名字,表中的每一列的列名和对应的数据...如我们先创建一个学生表。 这里的符号不是单引号,要注意下的。这里的符号是数字键1左边那个按键符号。这就是最基本的创建表的命令了。 这个表里,...
  • VFP自由表的创建、维护命令实例

    千次阅读 2018-10-18 19:47:28
    这是上机课上做的,主要...包括表的创建数据追加、插入、删除、修改等还有一个小的表单设计。 下面给出word里面内容和截图,格式有点奇怪,不知道怎么优化请讲究看一下,希望对大家有帮助~ 一、实验目的 1. 掌...
  • 一、前言入门 基本概念介绍 关系型数据库 关系型数据库,是指采用了关系模型来组织...关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维及其之间关系组成的一个数据组织。(百度百科) ...
  • SQLite 数据类型 和 基本命令SQLite数据类型SQLite 数据类型是一个用来指定任何对象的数据类型的属性。SQLite 中的每一列,每个变量和表达式都有相关的数据类型。您可以在创建表的同时使用这些数据类型。SQLite 使用...
  • 概念 : 数据库就是长期存放在计算机内,有组织,可共享大量数据集合,是一个数据"仓库"。 作用 : 保存数据,并能让用户安全管理数据(如:新增、查询、更新、删除等操作),减少冗余… 数据库又分为: 关系型数据库 ...
  • 本篇专门记录数据库增删改查中最常用、花招最多 查。 【文章结构】 一、数据的准备 二、基本的查询功能 ...首先创建一个数据库,以便后文命令的使用。 -- 创建一个数据库 create database pysql charse...
  • 上篇文章我们学到了如何安装数据库,下来我们学习数据库一些基本的操作,其中也包括对表操作。...通过此我们可以在数据库系统中创建一个叫reba数据库create database reba character set utf8 ;这条命令...
  • hive的基本命令 数据库的创建 定义 本质上是在hdfs上创建一个目录,使用comment加入数据库的描述信息,描述信息放在引号里。数据库的属性信息放在描述信息之后用with dbproperties 加入,属性信息放在括号内,属性...
  • MySQL数据库教程之六:实验 创建数据库和表、插入数据 、实验目的: 1、了解数据库的创建,查看表的结构及一些基本概念 2、掌握MySQL的基本数据类型 3、掌握使用命令创建数据库及表 4、会用命令方式插入...
  • 原标题:mysql数据库(库操作和操作)常用基本命令汇总 库:show databases;显示所有数据库create database ;创建数据库use ;使用数据库drop 直接删除数据库, 不提醒show tables; 查看当前数据库中的表...创建一个数...
  • mysql的基本命令

    2017-12-20 09:59:00
    对于刚学习数据库同学来说,我个人不建议一上手就安装客户端可视化工具去学习...案例:现在有一个数据表school,其中对应属性有name,city,grade,class 一:增加数据 用法:insert into 数据表 数据表中属性 va...
  • 库:show databases;显示所有数据库create database ;创建数据库use ;使用数据库drop 直接删除数据库, 不提醒show tables; 查看当前数据库中的表desc name ;...创建一个数据库mysql:create table ( [,....
  • 库:show databases;显示所有数据库create database ;创建数据库use ;使用数据库drop 直接删除数据库, 不提醒show tables; 查看当前数据库中的表desc name ;...创建一个数据库mysql:create table ( [,....
  • 库:show databases;显示所有数据库create database ;创建数据库use ;使用数据库drop 直接删除数据库, 不提醒show tables; 查看当前数据库中的表desc name ;...创建一个数据库mysql:create table ( [,....
  • Oracle的基本命令

    2020-04-20 11:15:48
    一个数据库下可以建立多个空间,一个表空间可以建立多个用户、一个用户下可以建立多个。 create tablespace xgq datafile 'c:user.dbf' size 100m autoextend on next 10m xgq 为空间名称 datafile 指定...
  • 安装好 HBase 之后,首先启动 HBase,执行 start-...创建一个 student 表,两个列族:info,grade create 'student','info','grade' 二、插入数据 向学生表的 info 列族添加一列 name,并设定其值为 Tom,rowkey...
  • 如果 key 不存在,那么在进行 push 操作前会创建一个空列表。如果 key 对应值不是一个 list 话,那么会返回一个错误。 LRANGE 返回列表指定区间内元素(倒叙) RPUSH 这个和 lpush 功能类似。不同是 rpush ...
  • Hive基本命令

    2021-03-29 18:30:01
    先在hdfs上面创建对应的文件夹用于存放表,一般为一个表需要一个文件夹路径,不建议一个文件夹内同时存在多个表的情况。 hdfs dfs -mkdir /test/data/emp; 然后把文件上传到对应的文件夹内 hdfs dfs -put employee....
  • MySQL基本操作-表命令

    2015-10-11 21:09:00
    一、数据库操作 1.基本命令  create database 数据库名; //创建数据库 show databases; //查询数据库 ... drop database 数据库名;... 2.... (1).InnoDB:提供事物、回滚、崩溃... 同一个数据中可以使用多种存储引擎...
  • MySQL的基本操作命令

    2019-04-12 18:46:48
    MySQL的基本操作命令数据库操作创建数据表删除数据表表插入数据查询表中的数据删除表中数据增加字段修改表名导出整个数据库一个建库和建表的实例1一个建库和建表的实例2 数据库操作 mysql -u root -p 开启...
  • MySQL 的基本命令总结

    千次阅读 2019-05-17 22:46:20
    文章目录前言启动(服务)并开启MySQL:停止(服务)及退出mysql:重启mysql:查看当前拥有的数据库创建一个数据库选择数据库查看数据库中有多少的表创建表查看表1.查看表的结构2.查看表的详细结构 , 存储引擎 , 表的...
  • 最近因工作需要,需要将一些数据同步到oracle数据库,我以为语法应该差不多,没想到真踩了几坑,今天分享出来,供大家借鉴。 准备一张测试test,字段有id、name和创建时间。添加数据INSERT INTO "ROOT"."test...
  • Hbase常用操作一、hbase shell基本命令二、将本地表数据批量导入到hbase中三、hbase与hive映射 一、hbase shell基本命令 判断存在与否 ...创建一个表user,列族为baseinfo,privateinfo create 'user',{N

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,315
精华内容 526
关键字:

创建一个数据表的基本命令