Android下创建一个sqlite数据库
2015-05-08 11:52
681 查看
在Android平台上,集成了一个嵌入式关系型数据库—SQLite,SQLite3支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n)、char(n)、decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型。
SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么。SQLite可以解析大部分标准SQL语句。
例如:可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值。 但有一种情况例外:定义为INTEGER PRIMARY KEY的字段只能存储64位整数, 当向这种字段保存除整数以外的数据时,将会产生错误。 另外, SQLite 在解析CREATE TABLE 语句时,会忽略 CREATETABLE 语句中跟在字段名后面的数据类型信息,如下面语句会忽略 name字段的类型信息:
CREATE TABLE person (personid integerprimary key autoincrement, name varchar(20))
比如我们创建一个保存个人信息的数据库。首先我们要创建一个类继承SQLiteOpenHelper.如下图:
其构造方法中的四个构造参数的含义如下:
context:上下文
name:数据库文件名
factory:游标(cursor)对象,即结果集指针。可以为null,为null时将使用系统默认的游标对象。
Version:数据库的版本号,其数值必须大于等于1,否则会抛出异常。
在super中设置各参数:
super(context,”person.db”,null,1);
上图中onCreate(SQLiteDatabase db)方法在数据库第一次被创建时调用,用于初次使用软件时生成数据库表,可以指定数据库的表结构、写入数据等。onUpgrade(SQLiteDatabase db, intoldVersion, int newVersion)方法则用于升级软件时更新数据库表结构。
我们使用onCreate(SQLiteDatabase db)方法初始化数据库的表结构。如下图:
到了这里,必要的信息已经配置完毕了,但是此时数据库还没有被创建。接下来就可以在必要的地方调用这个类了。调用该类并创建数据库方法如下:
此时在程序包内会自动创建一个名为databases的文件夹,我们创建的数据库文件就是文件夹内名为person.db的文件。
getWritableDatabase()和getReadableDatabase()方法都可以获取一个用于操作数据库的SQLiteDatabase实例。但getWritableDatabase()
方法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,倘若使用getWritableDatabase()打开数据库就会出错。getReadableDatabase()方法先以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。
SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么。SQLite可以解析大部分标准SQL语句。
例如:可以在Integer类型的字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值。 但有一种情况例外:定义为INTEGER PRIMARY KEY的字段只能存储64位整数, 当向这种字段保存除整数以外的数据时,将会产生错误。 另外, SQLite 在解析CREATE TABLE 语句时,会忽略 CREATETABLE 语句中跟在字段名后面的数据类型信息,如下面语句会忽略 name字段的类型信息:
CREATE TABLE person (personid integerprimary key autoincrement, name varchar(20))
比如我们创建一个保存个人信息的数据库。首先我们要创建一个类继承SQLiteOpenHelper.如下图:
其构造方法中的四个构造参数的含义如下:
context:上下文
name:数据库文件名
factory:游标(cursor)对象,即结果集指针。可以为null,为null时将使用系统默认的游标对象。
Version:数据库的版本号,其数值必须大于等于1,否则会抛出异常。
在super中设置各参数:
super(context,”person.db”,null,1);
上图中onCreate(SQLiteDatabase db)方法在数据库第一次被创建时调用,用于初次使用软件时生成数据库表,可以指定数据库的表结构、写入数据等。onUpgrade(SQLiteDatabase db, intoldVersion, int newVersion)方法则用于升级软件时更新数据库表结构。
我们使用onCreate(SQLiteDatabase db)方法初始化数据库的表结构。如下图:
到了这里,必要的信息已经配置完毕了,但是此时数据库还没有被创建。接下来就可以在必要的地方调用这个类了。调用该类并创建数据库方法如下:
此时在程序包内会自动创建一个名为databases的文件夹,我们创建的数据库文件就是文件夹内名为person.db的文件。
getWritableDatabase()和getReadableDatabase()方法都可以获取一个用于操作数据库的SQLiteDatabase实例。但getWritableDatabase()
方法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,倘若使用getWritableDatabase()打开数据库就会出错。getReadableDatabase()方法先以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。
相关文章推荐
- Android下创建一个SQLite数据库
- android 下创建一个sqlite数据库
- Android下创建一个SQLite数据库
- [android] android下创建一个sqlite数据库
- android-一个文件搞定SQLite数据库的创建与更新以及增删查改
- Android下创建一个sqlite数据库
- Android Dialog I-创建一个dialog
- 关于android开发环境中sdk和adt更新到22.6之后多了appcompat_v7和avd无法创建一个模拟器
- Android学习之四:创建一个简单程序
- android 快速创建一个新的线程
- android在当前app的目录下创建一个文件
- Android官方入门文档[1]创建一个Android项目
- 创建一个ArcGIS for Android 新项目并显示出本地的地图
- Android 创建一个新的Activity
- Android: 创建一个AlertDialog对话框,必须按确定或取消按钮才能关闭对话框,禁止按[返回键]或[搜索键]关闭
- android学习二:创建一个AVD(安卓模拟器)
- Android为WebView创建一个新进程,告别卡顿
- 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)
- 使用Android Design Support Library创建一个Android Material Design
- 【转】关于Eclipse创建Android项目时,会多出一个appcompat_v7的问题