导航:首页 > 操作系统 > android数据库字段类型

android数据库字段类型

发布时间:2023-01-30 01:49:25

㈠ 请教android中数据库表结构

SQPte 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla, PHP, Python)都使用了 SQPte. SQPte 由以下几个组件组成:SQL 编译器、内核、后端以及附件。SQPte 通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展 SQPte 的内核变得更加方便。 图 1. SQPte 内部结构 SQPte 基本上符合 SQL-92 标准,和其他的主要 SQL 数据库没什么区别。它的优点就是高效,Android 运行时环境包含了完整的 SQPte。 SQPte 和其他数据库最大的不同就是对数据类型的支持,创建一个表时,可以在 CREATE TABLE 语句中指定某列的数据类型,但是你可以把任何数据类型放入任何列中。当某个值插入数据库时,SQPte 将检查它的类型。如果该类型与关联的列不匹配,则 SQPte 会尝试将该值转换成该列的类型。如果不能转换,则该值将作为其本身具有的类型存储。比如可以把一个字符串(String)放入 INTEGER 列。SQPte 称这为“弱类型”(manifest typing.)。 此外,SQPte 不支持一些标准的 SQL 功能,特别是外键约束(FOREIGN KEY constrains),嵌套 transcaction 和 RIGHT OUTER JOIN 和 FPL OUTER JOIN, 还有一些 ALTER TABLE 功能。 除了上述功能外,SQPte 是一个完整的 SQL 系统,拥有完整的触发器,交易等等。 Android 集成了 SQPte 数据库 Android 在运行时(run-time)集成了 SQPte,所以每个 Android 应用程序都可以使用 SQPte 数据库。对于熟悉 SQL 的开发人员来时,在 Android 开发中使用 SQPte 相当简单。但是,由于 JDBC 会消耗太多的系统资源,所以 JDBC 对于手机这种内存受限设备来说并不合适。因此,Android 提供了一些新的 API 来使用 SQPte 数据库,Android 开发中,程序员需要学使用这些 API。 数据库存储在 data/< 项目文件夹 >/databases/ 下。 Android 开发中使用 SQPte 数据库 Activites 可以通过 Content Provider 或者 Service 访问一个数据库。下面会详细讲解如果创建数据库,添加数据和查询数据库。 创建数据库 Android 不自动提供数据库。在 Android 应用程序中使用 SQPte,必须自己创建数据库,然后创建表、索引,填充数据。Android 提供了 SQPteOpenHelper 帮助你创建一个数据库,你只要继承 SQPteOpenHelper 类,就可以轻松的创建数据库。SQPteOpenHelper 类根据开发应用程序的需要,封装了创建和更新数据库使用的逻辑。SQPteOpenHelper 的子类,至少需要实现三个方法: 构造函数,调用父类 SQPteOpenHelper 的构造函数。这个方法需要四个参数:上下文环境(例如,一个 Activity),数据库名字,一个可选的游标工厂(通常是 NPl),一个代表你正在使用的数据库模型版本的整数。 onCreate()方法,它需要一个 SQPteDatabase 对象作为参数,根据需要对这个对象填充表和初始化数据。 onUpgrage() 方法,它需要三个参数,一个 SQPteDatabase 对象,一个旧的版本号和一个新的版本号,这样你就可以清楚如何把一个数据库从旧的模型转变到新的模型。 下面示例代码展示了如何继承 SQPteOpenHelper 创建数据库: pubPc class DatabaseHelper extends SQPteOpenHelper { DatabaseHelper(Context context, String name, CursorFactory cursorFactory, int version) { super(context, name, cursorFactory, version); } @Override pubPc void onCreate(SQPteDatabase db) { // TODO 创建数据库后,对数据库的操作 } @Override pubPc void onUpgrade(SQPteDatabase db, int PdVersion, int newVersion) { // TODO 更改数据库版本的操作 } @Override pubPc void onOpen(SQPteDatabase db) { super.onOpen(db); // TODO 每次成功打开数据库后首先被执行 } } 接下来讨论具体如何创建表、插入数据、删除表等等。调用 getReadableDatabase() 或 getWriteableDatabase() 方法,你可以得到 SQPteDatabase 实例,具体调用那个方法,取决于你是否需要改变数据库的内容: db=(new DatabaseHelper(getContext())).getWritableDatabase(); return (db == nPl) ? false : true; 上面这段代码会返回一个 SQPteDatabase 类的实例,使用这个对象,你就可以查询或者修改数据库。 当你完成了对数据库的操作(例如你的 Activity 已经关闭),需要调用 SQPteDatabase 的 Close() 方法来释放掉数据库连接。 创建表和索引 为了创建表和索引,需要调用 SQPteDatabase 的 execSQL() 方法来执行 DDL 语句。如果没有异常,这个方法没有返回值。 例如,你可以执行如下代码: db.execSQL("CREATE TABLE mytable (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, value REAL);"); 这条语句会创建一个名为 mytable 的表,表有一个列名为 _id,并且是主键,这列的值是会自动增长的整数(例如,当你插入一行时,SQPte 会给这列自动赋值),另外还有两列:title( 字符 ) 和 value( 浮点数 )。 SQPte 会自动为主键列创建索引。 通常情况下,第一次创建数据库时创建了表和索引。如果你不需要改变表的 schema,不需要删除表和索引 . 删除表和索引,需要使用 execSQL() 方法调用 DROP INDEX 和 DROP TABLE 语句。 给表添加数据 上面的代码,已经创建了数据库和表,现在需要给表添加数据。有两种方法可以给表添加数据。 像上面创建表一样,你可以使用 execSQL() 方法执行 INSERT, UPDATE, DELETE 等语句来更新表的数据。execSQL() 方法适用于所有不返回结果的 SQL 语句。例如: db.execSQL("INSERT INTO widgets (name, inventory)"+ "VALUES ('Sprocket', 5)"); 另一种方法是使用 SQPteDatabase 对象的 insert(), update(), delete() 方法。这些方法把 SQL 语句的一部分作为参数。示例如下: ContentValues cv=new ContentValues(); cv.put(Constants.TITLE, "example title"); cv.put(Constants.VALUE, SensorManager.GRAVITY_DEATH_STAR_I); db.insert("mytable", getNPlCPumnHack(), cv); update()方法有四个参数,分别是表名,表示列名和值的 ContentValues 对象,可选的 WHERE 条件和可选的填充 WHERE 语句的字符串,这些字符串会替换 WHERE 条件中的“?”标记。update() 根据条件,更新指定列的值,所以用 execSQL() 方法可以达到同样的目的。 WHERE 条件和其参数和用过的其他 SQL APIs 类似。例如: String[] parms=new String[] {"this is a string"}; db.update("widgets", replacements, "name=?", parms); delete() 方法的使用和 update() 类似,使用表名,可选的 WHERE 条件和相应的填充 WHERE 条件的字符串。 查询数据库 类似 INSERT, UPDATE, DELETE,有两种方法使用 SELECT 从 SQPte 数据库检索数据。 1 .使用 rawQuery() 直接调用 SELECT 语句; 使用 query() 方法构建一个查询。 Raw Queries正如 API 名字,rawQuery() 是最简单的解决方法。通过这个方法你就可以调用 SQL SELECT 语句。例如: Cursor c=db.rawQuery( "SELECT name FROM sqPte_master WHERE type='table' AND name='mytable'", nPl); 在上面例子中,我们查询 SQPte 系统表(sqPte_master)检查 table 表是否存在。返回值是一个 cursor 对象,这个对象的方法可以迭代查询结果。如果查询是动态的,使用这个方法就会非常复杂。例如,当你需要查询的列在程序编译的时候不能确定,这时候使用 query() 方法会方便很多。 RegPar Queriesquery() 方法用 SELECT 语句段构建查询。SELECT 语句内容作为 query() 方法的参数,比如:要查询的表名,要获取的字段名,WHERE 条件,包含可选的位置参数,去替代 WHERE 条件中位置参数的值,GROUP BY 条件,HAVING 条件。除了表名,其他参数可以是 nPl。所以,以前的代码段可以可写成: String[] cPumns={"ID", "inventory"}; String[] parms={"snicklefritz"}; Cursor resPt=db.query("widgets", cPumns, "name=?",parms, nPl, nPl, nPl); 使用游标不管你如何执行查询,都会返回一个 Cursor,这是 Android 的 SQPte 数据库游标,使用游标,你可以:通过使用 getCount() 方法得到结果集中有多少记录;通过 moveToFirst(), moveToNext(), 和 isAfterLast() 方法遍历所有记录;通过 getCPumnNames() 得到字段名;通过 getCPumnIndex() 转换成字段号;通过 getString(),getInt() 等方法得到给定字段当前记录的值;通过 requery() 方法重新执行查询得到游标;通过 close() 方法释放游标资源;例如,下面代码遍历 mytable 表 Cursor resPt=db.rawQuery("SELECT ID, name, inventory FROM mytable"); resPt.moveToFirst(); while (!resPt.isAfterLast()) { int id=resPt.getInt(0); String name=resPt.getString(1); int inventory=resPt.getInt(2); // do something usefP with these resPt.moveToNext(); } resPt.close(); 在 Android 中使用 SQPte 数据库管理工具 在其他数据库上作开发,一般都使用工具来检查和处理数据库的内容,而不是仅仅使用数据库的 API。使用 Android 模拟器,有两种可供选择的方法来管理数据库。首先,模拟器绑定了 sqPte3 控制台程序,可以使用 adb shell 命令来调用他。只要你进入了模拟器的 shell,在数据库的路径执行 sqPte3 命令就可以了。数据库文件一般存放 在:/data/data/your.app.package/databases/your-db-name如果你喜欢使用更友好的工具,你 可以把数据库拷贝到你的开发机上,使用 SQPte-aware 客户端来操作它。这样的话,你在一个数据库的拷贝上操作,如果你想要你的修改能反映到设备上,你需要把数据库备份回去。把数据库从设备上考出来,你可以使 用 adb pPl 命令(或者在 IDE 上做相应操作)。存储一个修改过的数据库到设备上,使用 adb push 命令。一个最方便的 SQPte 客户端是 FireFox SQPte Manager 扩展,它可以跨所有平台使用。 图 2. SQPte Manager 结束语 如果你想要开发 Android 应用程序,一定需要在 Android 上存储数据,使用 SQPte 数据库是一种非常好的选择。本文介绍了如何在 Android 应用程序中使用 SQPte 数据库 ,主要介绍了在 Android 应用程序中使用 SQPte 创建数据库和表、添加数据、更新和检索数据,还介绍了比较常用的 SQPte 管理工具,通过阅读本文,你可以在 Android 中轻松操作 SQPte 数据库。

㈡ 安卓execsql数据库long类型怎么表示

第一,数据库中没有long型。oracle db2等数据库中,请使用number(24)作为类型。java中long的长度好像没超过16位。如果使用很大的整数,请使用java.math包中的 bigInteger类型。 第二。你这个完全可以存储为字符串或者日期类型好么?

㈢ android怎样读取sms数据库指定字段的数据

_id => 短消息序号 如100
thread_id => 对话的序号 如100
address => 发件人地址,手机号.如+8613811810000
person => 发件人,返回一个数字就是联系人列表里的序号,陌生人为null
date => 日期 long型。如1256539465022
protocol => 协议 0 SMS_RPOTO, 1 MMS_PROTO
read => 是否阅读 0未读, 1已读
status => 状态 -1接收,0 complete, 64 pending, 128 failed
type => 类型 1是接收到的,2是已发出
body => 短消息内容
service_center => 短信服务中心号码编号。如+8613800755500
String[] projection = new String[]{"address", "body"};
Cursor cursor = getContentResolver().query(uri, projection, "where .." new String[]{"", ""}, "order by ..")

㈣ android中的数据库怎么去写如何建表,希望有具体代码参考啊!

android 中的数据库操作 android 中的应用开发很难避免不去使用数据库, 聊聊 android 中的数据 库操作,我发给你 word 贴不下
一、android 内的数据库的基础知识介绍
1.用了什么数据库
android 中采用的数据库是 SQLite 这个轻量级的嵌入式开源数据库,它是用 c 语言构建的。相关简介可以从链接查看。
2.数据库基本知识观花
对于一些和我一样还没有真正系统学习数据库技术的同学来说,把 SQL92 标 准中的一些基本概念、基本语句快速的了解一下,是很有必要的,这样待会用 Android 的 database 相关方法去执行一些数据库语句时就不会茫然了。
①数据库的基本结构——表格
表格是数据库中储存资料的基本架构。表格被分为栏位 (column) 及列位 (row)。每 一列代表一笔资料,而每一栏代表一笔资料的一部份。举例来说,如果我们有一个记载顾客 资料的表格,那栏位就有可能包括姓、名、地址、城市、国家、生日..等等。每一个表格 . 拥有一个独一无二的名字(Table Name)以便能够让用户定位到它上面。一个典型的表格结 构如下:
Store_Information 表格
store_name Sales Date Los Angeles $1500 Jan-05-1999 San Diego $250 Jan-07-1999 Los Angeles $300 Jan-08-1999 Boston $700 Jan-08-1999 该表格的表格名字为 Store_Information, 一共有三个栏位, 分别为 store_name , Sales , Data , 已经录入了四笔数据所以有四个列位。
②关于数据类型
和其他的数据库不同的是,sqlite 是无类型的。也就是当你创建一个表格时,无需对 每一个栏位要存储的数据的类型进行声明,当你在给表格增加数据条目时,sqlite 会自动找 到存入的数据的类型。
SQLite 允许忽略数据类型,但是,仍然建议在 Create Table 语句中指定数据类型, 因为数据类型有利于增强程序的可读性。SQLite 支持常见的数据类型,如 VARCHAR、 NVARCHAR、TEXT、INTEGER、FLOAT、BOOLEAN、CLOB、BLOB、TIMESTAMP、 NUMERIC、VARYING、CHARACTER、NATl0NAI, VARYINGCHARACTER。这些数据类 型都是 SQL92 标准中规定的标准数据库数据类型,想要有更近一步了解,请参看下表。
SQL 数据库数据类型详解 数据类型 类型 描 述 bit 整型 bit 数据类型是整型,其值只能是 0、1 或空值。这种数据类型用于存储只有两 种可能值的数据,如 Yes 或 No、True 或 Fa lse 、On 或 Off int 整型 int 数据类型可以存储从- 231(-2147483648)到 231 (2147483 647)之间的整数。存 储到数据库的几乎所有数值型的数据都可以用这种数据类型。 这种数据类型在数据库里占用 4 个字节 smallint 整型 smallint 数据类型可以存储从- 215(-32768)到 215(32767)之间的整数。这种 数据类型对存储一些常限定在特定范围内的数值型数据非常有用。 这种数据类型在数据库里 占用 2 字节空间 tinyint 整型 tinyint 数据类型能存储从 0 到 255 之间的整数。 它在你只打算存储有限数目 的数值时很有用。 这种数据类型在数据库中占用 1 个字节 numeric 精确数值型 numeric 数据类型与 decimal 型相同 decimal 精确数值型 decimal 数据类型能用来存储从-1038-1 到 1038-1 的固定精度和范围 的数值型数据。使用这种数据类型时,必须指定范围和精度。 范围是小数点左右所能存储

㈤ Android一般采用什么数据库

用的Eclipse,数据量的话还可以把,因为是初学,所以就打算先少弄几个景点先试试,我想的是能不能做到应用去链接一个远端的数据库,就是比方说点开一个景点信息,它是从数据库中下载出来的。。额。。专业的我也不会说。。

㈥ android内置的轻量级数据库sqlite使用以下哪个关键字表示文本字符串类型字段

text 可以不加的。
如sql语句
create table student (a,b,c);
这句话指的是:创建studnet 表, 字段a,字段b,字段c

㈦ android数据库存储类型有哪些

android开发中sqlite3支持的数据类型:
NULL、INTEGER、REAL、TEXT、BLOB
但是,sqlite3也支持如下的数据类型
smallint 16位整数
integer 32位整数
decimal(p,s) p是精确值,s是小数位数
float 32位实数
double 64位实数
char(n) n长度字符串,不能超过254
varchar(n) 长度不固定最大字符串长度为n,n不超过4000
graphic(n) 和 char(n) 一样,但是单位是两个字符double-bytes,n不超过127(中文字)
vargraphic(n) 可变长度且最大长度为n

date 包含了年份、月份、日期
time 包含了小时、分钟、秒
timestamp 包含了年、月、日、时、分、秒、千分之一秒

㈧ Android一般采用什么数据库

Android一般采用sqlite数据库作为数据存储方案。
通常的数据库有关系型数据如:ms ql ,mysql,oracle等,非关系型nosql数据库 如mongodb,redis
android作为手机端的手机操作系统,是无法直接操作大型的关系型或是no sql类型的数据库的。
从你的应用描述中景点等信息都可以选择存储在sqlite中。
但是图片这些信息还是建议你存储到服务器上,以文件的形式存储。
还有一种方式是在服务器中使用任何的关系型和非关系型数据库存储你的所有数据,但是你的android应用需要通过api去访问你的景点图片信息。

阅读全文

与android数据库字段类型相关的资料

热点内容
udp命令字 浏览:659
app服务端java源码 浏览:798
电脑用文件夹玩大型游戏 浏览:254
安卓耳塞失灵怎么办 浏览:765
华三交换机保存命令 浏览:605
命令方块怎么调键盘 浏览:841
不把密码存在服务器上怎么办 浏览:398
怎么让指令方块的命令消失 浏览:543
用单片机做plc 浏览:404
云服务器进入子目录命令 浏览:795
服务器机柜如何配电 浏览:578
怎么删除iphone资源库里的app 浏览:940
pdf鱼 浏览:648
单片机pcf8591什么作用 浏览:805
sql命令学院 浏览:283
加密软件在电脑那个盘 浏览:988
android获取外部存储 浏览:573
怎么查自己家的服务器地址 浏览:858
编程c语言工作好不好 浏览:569
单片机焊接地怎么连接 浏览:694