百度
360搜索
搜狗搜索

sqlite数据库的使用,如何使用sqlite 数据库文件详细介绍

本文目录一览: 怎么用sqlite新建数据库表?

1、双击打开SQLite Expert Professional的安装包。
2、选择好安装路径。
3、打开SQLite Expert Professional点击左上角的新建数据库,傍边的是加载本地是数据库的按钮。
4、输入数据库的文件名,会生成一个数据库文件。
5、文件以及生成了,接下去建表。
6、右键新建数据库表。
7、添加需要的字段,并选择字段类型和约束条件。
8、输入数据库表的表名,然后点apply生成数据库表。
9、接下去我们可以把这个数据库文件拷贝出来,放到我们的工程里进行使用。

Android开发怎么查看和管理sqlite数据库?

在Android中可以使用Eclipse插件DDMS来查看,也可以使用Android工具包中的adb工具来查看。android项目中的sqlite数据库位于/data/data/项目包/databases中。
使用DDMS导出sqlite数据库。
1、首先打开android项目的调试模式,然后找到显示DDMS:
选择DDMS
2、切换到DDMS,显示FileExplorer窗口,找到/data/data/
然后找到程序包的文件夹,打开databases,就能看到sqlite数据库文件了。选择将其导出。
这样就把sqlite数据库文件以文件的方式导出来了,然后使用sqlite界面管理工具如sqliteadministrator、sqliteman或者firefox插件sqlitemanager等打开就可以了。
使用adb工具访问sqlite数据库
AndroidDebugBridge(ADB)是Android的一个通用调试工具,它可以更新设备或模拟器中的代码,可以管理预定端口,可以在设备上运行shell命令,我们知道android是基于Linux内核,它的内部文件结构也是采用linux文件组织方式,因此访问它的文件结构需要使用shell。这次我们就会用shell来访问android应用中的sqlite数据库文件。
1、运行cmd,切换到android-sdk目录,运行adb.exe,加上参数shell,出现#号就代表进入了shell命令模式,注意adb要在Android模拟器运行时才能进入shell:
2、shell命令记住两个基本命令ls和cd,类似windows命令提示行中的dir和cd,代表列出当前目录下文件列表和进入到指定目录。了解这两个命令之后,就可以找到data/data/项目包名/databases:
找到数据库文件:
接下来就是使用sqlite管理工具来进行操作了。键入sqlite3数据库名就进入了sqlite管理模式了。
在android的sdk中自带了sqlite3.exe,这是sqlite的官方管理工具,它是一个命令行工具。为了使用方便,将其路径注册到系统环境变量path中,即将;%Android_Home%加在Path中,这样只样运行sqlite3,就能直接打开sqlite管理工具了。
sqlite管理数据库篇
sqlite命令行工具默认是以;结束语句的。所以如果只是一行语句,要在末尾加;,或者在下一行中键入;,这样sqlite命令才会被执行。
sqlite常用命令:
.tables--查看数据库的表列表
.exit--退出sqlite命令行

如何使用sqlite创建数据库

1.首先你需要去下载一个 Navicat for SQLite ,怎么下载这里我不多说,你可以去百度搜索。最好下载绿色版。搜索 “Navicat for SQLite 绿色版”。
2.下载后,右击软件包进行解压缩。
3.下载后双击文件夹,打开文件目录,找到 navicat.exe 这个主程序,右击在弹出菜单依次点击【发送到(N)】--->【桌面快捷方式】。
4.这时你的电脑桌面就多了一个 navicat.exe 的快捷方式图标,以后需要打开,直接点击这个快捷方式就可以了。
5.双击桌面快捷方式,打开软件,在软件左上角点击【连接】按钮,点击后弹出新建连接对话框。
6.在弹出窗口中输入【连接名】,选择【类型】-然后在下面选择数据库文件,或者数据库保存位置。
7.这样就在你的指定位置创建了一个Sqlite数据库文件了,有了这个数据库文件你可以做任何数据库的操作了。

Android开发中使用SQLite 数据库

SQPte 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla, PHP, Python)都使用了 SQPte.SQPte 由以下几个组件组成:SQL 编译器、内核、后端以及附件。SQPte 通过利用虚拟机和虚拟数据库引擎(VDBE),使调试、修改和扩展 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);}@OverridepubPc void onCreate(SQPteDatabase db) {// TODO 创建数据库后,对数据库的操作}@OverridepubPc void onUpgrade(SQPteDatabase db, int PdVersion, int newVersion) {// TODO 更改数据库版本的操作}@OverridepubPc 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 KEYAUTOINCREMENT, 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 条件的字符串。#p#副标题#e#查询数据库类似 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 theseresPt.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 扩展,它可以跨所有平台使用。结束语如果你想要开发 Android 应用程序,一定需要在 Android 上存储数据,使用 SQPte 数据库是一种非常好的选择。本文介绍了如何在 Android 应用程序中使用 SQPte 数据库 ,主要介绍了在 Android 应用程序中使用 SQPte 创建数据库和表、添加数据、更新和检索数据,还介绍了比较常用的 SQPte 管理工具,通过阅读本文,你可以在 Android 中轻松操作 SQPte 数据库。#p#副标题#e#

阅读更多 >>>  为什么电脑拆不了字体

sqlite3常用命令以及django如何操作sqlite3数据库

1、确认sqlite3是否已经安装进去python命令行,执行>>>importsqlite3>>>没有报错,说明sqlite3已经成功安装了2、如何进入sqlite3命令行sqlite3/path/to/dbname直接执行sqlite3 加数据库名即可~sqlite3~/Downloads/django_test/cmdb/db.sqlite3sqlite3SQLiteversion3.14.02016-07-2615:17:14Enter".help"forusagehints.sqlite>3、.tables :查看所有表sqlite>.tablesauth_groupdjango_content_typeauth_group_permissionsdjango_migrationsauth_permissiondjango_sessionauth_userucloud_projectauth_user_groupsucloud_regionauth_user_user_permissionsucloud_uhostdjango_admin_logucloud_zone4、查询表中总的数据条目数selectcount()fromTableName;例如:sqlite>selectcount()fromucloud_zone;11sqlite>selectcount()fromucloud_uhost;147sqlite>selectcount()fromucloud_project;105、执行多条查询语句sqlite>select...>(selectcount(1)fromucloud_uhost)asuhost,...>(selectcount(1)fromucloud_project)asproject,...>(selectcount(1)fromucloud_region)asregion...>;147|10|86、格式化输出您可以使用下列的点命令来格式化输出为本教程下面所列出的格式:sqlite>.headeronsqlite>.modecolumnsqlite>.timeronsqlite>更多命令查看:http://www.runoob.com/sqlite/sqlite-commands.html 二、python如何执行sqlite查询命令python执行sqlite命令的流程:1、cx=sqlite3.connect("db.sqlite3)创建或打开数据库文件,如果数据库文件不存在,则创建,存在,则打开该文件。cx为数据库连接对象,它可以有以下操作: commit()--事务提交 rollback()--事务回滚 close()--关闭一个数据库连接 cursor()--创建一个游标2、cursor=cx.cursor()定义了一个游标。游标对象有以下的操作: execute()--执行sql语句 executemany--执行多条sql语句 close()--关闭游标 fetchone()--从结果中取一条记录 fetchmany()--从结果中取多条记录 fetchall()--从结果中取出多条记录 scroll()--游标滚动 关于对象的方法可以去 Python 主页上查看DB API的详细文档3、cursor.execute("""...select...(selectcount(1)fromucloud_uhost)asuhost...""")cursor.execute(sql语句)是执行sql语句4、cursor.close()关闭游标下面是操作数据库的过程>>>importsqlite3>>>fromdjango.dbimportconnectionscx=sqlite3.connect("/Users/cengchengpeng/Downloads/django_test/cmdb/db.sqlite3")cursor=cx.cursor()>>>cursor

>>>cursor.execute("""...select...(selectcount(1)fromucloud_uhost)asuhost,...(selectcount(1)fromucloud_project)asproject,...(selectcount(1)fromucloud_zone)aszone...""")

>>>cursor.description((‘uhost‘,None,None,None,None,None,None),(‘project‘,None,None,None,None,None,None),(‘zone‘,None,None,None,None,None,None))>>>columns=[_[0].lower()for_incursor.description]>>>columns[‘uhost‘,‘project‘,‘zone‘]>>>for_incursor:...print_...(147,10,11)>>>results=[dict(zip(columns,_))for_incursor]>>>results>>>results[{‘project‘:10,‘zone‘:11,‘uhost‘:147}]>>>cursor.close()写python脚本,来执行sqlite语句#coding:utf-8fromdjango.dbimportconnectionsdefopen_sql_dict(sql,connection_name=‘default‘):dbs=connections[connection_name]cursor=dbs.cursor()cursor.execute(sql)columns=[_[0].lower()for_incursor.description]results=[dict(zip(columns,_))for_incursor]cursor.close()returnresults这里脚本里面,用到了zip()方法和dict()方法本文出自 “zengestudy” 博客,请务必保留此出处http://zengestudy.blog.51cto.com/1702365/1904680sqlite3常用命令以及django如何操作sqlite3数据库标签:sqlite

手机存储的轻型数据库(SQLite)是干什么的?

SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它实现自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite的代码属于公共领域,因此可以免费用于任何目的,商业或私人。SQLite是世界上部署最广泛的数据库。
SQLite支持Windows/Linux/Unix等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比它们都快。
SQLite是一种轻型的关系型数据库管理系统,常用于在手机等嵌入式设备上存储和管理数据。
在手机中,SQLite可以用于保存各种应用程序的数据,例如通讯录、短信、音乐播放列表、浏览器历史记录等。SQLite具有占用空间小、快速、可靠、易于维护等特点,适合用于存储少量数据和快速查询的场景。SQLite支持SQL语言,允许开发者使用SQL语句对数据进行增、删、改、查等操作,方便开发者进行数据管理。
在移动应用中,由于存储容量和计算能力的限制,SQLite成为了很多应用的首选数据库管理系统,被广泛应用于Android和iOS平台的应用程序开发中。
SQLite是一个轻型的数据库,无需任何服务,无需任何配置的绿色数据库。 SQLite是一个进程内库,它实现了一个自包含、无服务器、零配置、事务性SQL数据库引擎。
SQLite是一种轻型数据库,常用于移动设备和嵌入式系统中。在手机存储中,SQLite被用作一个本地的嵌入式数据库,用于存储和管理应用程序的数据。SQLite提供了一个简单的、易于集成的方式,使开发者可以将数据存储在手机本地,而不需要连接到远程服务器。
SQLite的主要优点是其轻量级、高效和易用性。它占用的空间非常小,可以在手机存储中轻松地安装和管理,而且它不需要独立的服务器或其他软件来运行。开发者可以使用SQLite来存储应用程序的各种数据,如用户配置、本地缓存、日志信息等。
此外,SQLite还提供了多种编程语言的API,如C、Java、Python等,使得开发者可以使用自己熟悉的编程语言来操作SQLite数据库。这些API非常易于使用,能够让开发者快速地进行数据库操作,如查询、插入、更新和删除数据等。
总之,SQLite是一种简单、高效、易于集成的本地数据库,适用于在手机等移动设备上存储和管理数据。
SQLite添加、更新和删除数据是常见的数据库操作。然而,数据越高并不一定好,这取决于具体的需求和情况。以下是关于这些操作的更详细的解释:
添加数据:使用SQLite添加数据非常简单,只需向表中插入新的行即可。添加数据的目的是为了将新的数据存储到数据库中,以便后续查询和操作。然而,添加过多的数据可能会导致数据库变得庞大和不易维护,因此需要根据实际需求来控制添加的数据量。
更新数据:在SQLite中更新数据需要使用UPDATE语句,可以更新表中现有行的数据。更新数据的目的是为了使数据库中的数据与实际情况保持同步。然而,更新数据的频率过高也可能会导致数据库变得混乱和难以维护,因此需要根据实际需求来控制更新的数据量和频率。
删除数据:在SQLite中删除数据需要使用DELETE语句,可以删除表中的指定行。删除数据的目的是为了清理不需要的数据,以便数据库可以更好地管理和维护。然而,删除过多的数据可能会导致数据丢失和无法恢复,因此需要在删除数据时谨慎处理。
综上所述,添加、更新和删除数据的操作需要根据实际需求来控制数据量和频率。数据越高并不一定好,而是应该根据实际需求来合理管理和维护数据库。

什么是SQLITE数据库

SQLite是一款轻型的数据库,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
SQLite虽然很小巧,但是支持的SQL语句不会逊色于其他开源数据库,它支持的SQL包括:
ATTACH DATABASE
BEGIN TRANSACTION
comment
COMMIT TRANSACTION
COPY
CREATE INDEX
CREATE TABLE
CREATE TRIGGER
CREATE VIEW
DELETE
DETACH DATABASE
DROP INDEX
DROP TABLE
DROP TRIGGER
DROP VIEW
END TRANSACTION
EXPLAIN
expression
INSERT
ON CONFLICT clause
PRAGMA
REPLACE
ROLLBACK TRANSACTION
SELECT
UPDATE
同时它还支持事务处理功能等等。也有人说它象Microsoft的Aess,有时候真的觉得有点象,但是事实上它们区别很大。比如SQLite 支持跨平台,操作简单,能够使用很多语言直接创建数据库,而不象Aess一样需要Office的支持。如果你是个很小型的应用,或者你想做嵌入式开发,没有合适的数据库系统,那么现在你可以考虑使用SQLite。

如何使用SQLite

  SQLite3是目前最新的SQLite版本。可以从网站上下载SQLite3的源代码(本书使用的版本是sqlite-3.6.12.tar.gz)。
  解压缩后进入sqlite-3.6.12的根目录,首先命令“./configure”生成Makefile文件,接着运行命令“make”对源代码进行编译,最后运行命令“make install”安装SQLite3。安装完毕后,可以运行命令sqlite3查看SQLite3是否能正常运行,如下所示:
  [root@localhost ~]# sqlite3
  SQLite version 3.6.12
  Enter ".help" for instructions
  Enter SQL statements terminated with a ";"
  sqlite>
  可以看到,SQLite3启动后会停留在提示符sqlite>处,等待用户输入SQL语句。
  在使用SQLite3前需要先了解下SQLite3支持的数据类型。SQLite3支持的基本数据类型主要有以下几类:
  NULL
  NUMERIC
  INTEGER
  REAL
  TEXT
  SQLite3会自动把其他数据类型转换成以上5类基本数据类型,转换规则如下所示:
  char、clob、test、varchar—> TEXT
  integer—>INTEGER
  real、double、float—> REAL
  blob—>NULL
  其余数据类型都转变成NUMERIC
  下面通过一个实例来演示SQLite3的使用方法。
  新建一个数据库
  新建数据库test.db(使用.db后缀是为了标识数据库文件)。在test.db中新建一个表test_table,该表具有name,、sex、age三列。SQLite3的具体操作如下所示:
  [root@localhost home]# sqlite3 test.db
  SQLite version 3.6.12
  Enter ".help" for instructions
  Enter SQL statements terminated with a ";"
  sqlite> create table test_table(name, sex, age);
  如果数据库test.db已经存在,则命令“sqlite3 test.db”会在当前目录下打开test.db。如果数据库test.db不存在,则命令“sqlite3 test.db”会在当前目录下新建数据库test.db。为了提高效率,SQLite3并不会马上创建test.db,而是等到第一个表创建完成后才会在物理上创建数据库。
  由于SQLite3能根据插入数据的实际类型动态改变列的类型,所以在create语句中并不要求给出列的类型。
  创建索引
  为了加快表的查询速度,往往在主键上添加索引。如下所示的是在name列上添加索引的过程。
  sqlite> create index test_index on test_table(name);
  操作数据
  如下所示的是在test_table中进行数据的插入、更新、删除操作:
  sqlite> insert into test_table values ('xiaoming', 'male', 20);
  sqlite> insert into test_table values ('xiaohong', 'female', 18);
  sqlite> select * from test_table;
  xiaoming|male|20
  xiaohong|female|18
  sqlite> update test_table set age=19 where name = 'xiaohong';
  sqlite> select * from test_table;
  xiaoming|male|20
  xiaohong|female|19
  sqlite> delete from test_table where name = 'xiaoming';
  sqlite> select * from test_table;
  xiaohong|female|19
  批量操作数据库
  如下所示的是在test_table中连续插入两条记录:
  sqlite> begin;
  sqlite> insert into test_table values ('xiaoxue', 'female', 18);
  sqlite> insert into test_table values ('xiaoliu', 'male', 20);
  sqlite> commit;
  sqlite> select * from test_table;
  xiaohong|female|19
  xiaoxue|male|18
  xiaoliu|male|20
  运行命令commit后,才会把插入的数据写入数据库中。
  数据库的导入导出
  如下所示的是把test.db导出到sql文件中:
  [root@localhost home]# sqlite3 test.db ".dump" > test.sql;
  test.sql文件的内容如下所示:
  BEGIN TRANSACTION;
  CREATE TABLE test_table(name, sex, age);
  INSERT INTO "test_table" VALUES('xiaohong','female',19);
  CREATE INDEX test_index on test_table(name);
  COMMIT;
  如下所示的是导入test.sql文件(导入前删除原有的test.db):
  [root@localhost home]# sqlite3 test.db < test.sql;
  通过对test.sql文件的导入导出,可以实现数据库文件的备份。
  11.2.2 SQLite3的C接口
  以上介绍的是SQLite3数据库的命令操作方式。在实际使用中,一般都是应用程序需要对数据库进行访问。为此,SQLite3提供了各种编程语言的使用接口(本书介绍C语言接口)。SQLite3具有几十个C接口,下面介绍一些常用的C接口。
  sqlite_open
  作用:打开SQLite3数据库
  原型:int sqlite3_open(const char *dbname, sqlite3 **db)
  参数:
  dbname:数据库的名称;
  db:数据库的句柄;
  sqlite_colse
  作用:关闭SQLite3数据库
  原型:int sqlite_close(sqlite3 *db)
  例如:
  test.c:
  #include

阅读更多 >>>  linux下ini文件怎么打开乱码

  #include

  static sqlite3 *db=NULL;

  int main()

  {

  int rc;

  rc= sqlite3_open("test.db", &db);

  if(rc)

  {

  printf("can't open database!\n");

  }

  else

  {

  printf("open database success!\n");

  }

  sqlite3_close(db);

  return 0;

  }

  运行命令“gcc –o test test.c –lsqlite3”进行编译,运行test的结果如下所示:

  [root@localhost home]# open database success!

  sqlite_exec

  作用:执行SQL语句

  原型:int sqlite3_exec(sqlite3 *db, const char *sql, int (*callback)(void*,int,char**,char**), void *, char **errmsg)

  参数:

  db:数据库;

  sql:SQL语句;

  callback:回滚;

  errmsg:错误信息

  例如:

  test.c:

  #include

  #include

  static sqlite3 *db=NULL;

  static char *errmsg=NULL;

  int main()

  {

  int rc;

  rc = sqlite3_open("test.db", &db);

  rc = sqlite3_exec(db,"insert into test_table values('daobao', 'male', 24)", 0, 0, &errmsg);

  if(rc)

  {

  printf("exec fail!\n");

  }

  else

  {

  printf("exec success!\n");

  }

  sqlite3_close(db);

  return 0;

  }

  编译完成后,运行test的结果如下所示:

  [root@localhost home]# ./test

  exec success!

  [root@localhost home]# sqlite3 test.db

  SQLite version 3.6.11

  Enter ".help" for instructions

  Enter SQL statements terminated with a ";"

  sqlite> select * from test_table;

  daobao|male|24

  sqlite3_get_table

  作用:执行SQL查询

  原型:int sqlite3_get_table(sqlite3 *db, const char *zSql, char ***pazResult, int *pnRow, int *pnColumn, char **pzErrmsg)

  参数:

  db:数据库;

  zSql:SQL语句;

  pazResult:查询结果集;

  pnRow:结果集的行数;

  pnColumn:结果集的列数;

  errmsg:错误信息;

  sqlite3_free_table

  作用:注销结果集

  原型:void sqlite3_free_table(char **result)

  参数:

  result:结果集;

  例如:

  test.c:

  #include

  #include

  static sqlite3 *db=NULL;

  static char **Result=NULL;

  static char *errmsg=NULL;

  int main()

  {

  int rc, i, j;

  int nrow;

  int ncolumn;

  rc= sqlite3_open("test.db", &db);

  rc= sqlite3_get_table(db, "select * from test_table", &Result, &nrow, &ncolumn,

  &errmsg);

  if(rc)

  {

  printf("query fail!\n");

  }

  else

  {

  printf("query success!\n");

  for(i = 1; i <= nrow; i++)

  {

  for(j = 0; j < ncolumn; j++)

  {

  printf("%s | ", Result[i * ncolumn + j]);

  }

  printf("\n");

  }

  }

  sqlite3_free_table(Result);

  sqlite3_close(db);

  return 0;

  }

  编译完成后,运行test的结果如下所示:

  [root@localhost home]# ./test

  query success!

  xiaohong | female | 19 |

  xiaoxue | female | 18 |

  xiaoliu | male | 20 |

  daobao | male | 24 |

  sqlite3_prepare

  作用:把SQL语句编译成字节码,由后面的执行函数去执行

  原型:int sqlite3_prepare(sqlite3 *db, const char *zSql, int nByte, sqlite3_stmt **stmt, const char **pTail)

  参数:

  db:数据库;

  zSql:SQL语句;

  nByte:SQL语句的最大字节数;

  stmt:Statement句柄;

  pTail:SQL语句无用部分的指针;

  sqlite3_step

  作用:步步执行SQL语句字节码

  原型:int sqlite3_step (sqlite3_stmt *)

  例如:

  test.c:

  #include

阅读更多 >>>  办公室常用的excel公式,办公室文员必备函数公式是什么?

  #include

  static sqlite3 *db=NULL;

  static sqlite3_stmt *stmt=NULL;

  int main()

  {

  int rc, i, j;

  int ncolumn;

  rc= sqlite3_open("test.db", &db);

  rc=sqlite3_prepare(db,"select * from test_table",-1,&stmt,0);

  if(rc)

  {

  printf("query fail!\n");

  }

  else

  {

  printf("query success!\n");

  rc=sqlite3_step(stmt);

  ncolumn=sqlite3_column_count(stmt);

  while(rc==SQLITE_ROW)

  {

  for(i=0; i<2; i++)

  {

  printf("%s | ", sqlite3_column_text(stmt,i));

  }

  printf("\n");

  rc=sqlite3_step(stmt);

  }

  }

  sqlite3_finalize(stmt);

  sqlite3_close(db);

  return 0;

  }

  编译完成后,运行test的结果如下所示:

  [root@localhost home]# ./test

  query success!

  xiaohong | female | 19 |

  xiaoxue | female | 18 |

  xiaoliu | male | 20 |

  daobao | male | 24 |

  在程序中访问SQLite3数据库时,要注意C API的接口定义和数据类型是否正确,否则会得到错误的访问结果。

如何使用sqlite 数据库文件

在我几个Android应用中,我需要访问已有的数据库。这些数据库往往很大,甚至超过asset文件大约1兆字节的限制。而且在新的版本中数据库需要更新。我在网上,特别是StackOverflow看了一些文章,并做了一些试验,觉得下面的代码能基本上满足我的需求。
  其主要思路是:
  1. 把数据库分解成几个asset文件。
  2. 当需要打开数据库时,如果数据库不存在,就把那几个asset文件重新合并成一个数据库文件。
  3. 如果数据库的版本改变了,就在onUpgrade()方法中把数据库文件删除掉。
  
  下面是代码:
  
  //数据库的缺省路径
  private static finalString DB_PATH = "/data/data/com.mypackage.myapp/databases/";
  private static finalString DB_NAME = "mydb.db";
  private static finalint DB_VERSION = 2;
  private static finalString DB_SPLIT_NAME = "mydb.db.00";
  private static finalint DB_SPLIT_COUNT = 3;
  private SQLiteDatabasem_database;
  private final Contextm_context;
  /**
  * Constructor
  *保存传进来的context参数以用来访问应用的asset和资源文件。
  * @param context
  */
  public MyDB(Contextcontext) {
  super(context, DB_NAME, null, DB_VERSION);
  this.m_context = context;
  }
  public static MyDBopenDatabaseReadOnly(Context context) {
  MyDB db = new MyDB(context);
  
  try {
  db.createDataBase();
  } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  
  db.openDataBase(SQLiteDatabase.OPEN_READONLY);
  return db;
  }
  public static MyDBopenDatabaseReadWrite(Context context) {
  MyDB db = new MyDB(context);
  
  try {
  db.createDataBase();
  } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  
  db.openDataBase(SQLiteDatabase.OPEN_READWRITE);
  return db;
  }
  /**
  *创建一个空数据库,用来存储你已有的数据库。
  */
  public voidcreateDataBase() throws IOException{
  boolean dbExist =checkDataBase();
  if (dbExist) {
  /*
  **如果你的数据库的版本改变了,调用这个方法确保在onUpgrade()被调用时
  **传进去的是可写的数据库。
  */
  SQLiteDatabase db =this.getWritableDatabase();
  
  if (db != null) {
  db.close();
  }
  }
  
  dbExist = checkDataBase();
  
  if (!dbExist) {

网站数据信息

"sqlite数据库的使用,如何使用sqlite 数据库文件"浏览人数已经达到22次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:sqlite数据库的使用,如何使用sqlite 数据库文件的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!