`
逆风的香1314
  • 浏览: 1416294 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

(7) Can multiple applications or multiple instances of the same application access a single database file at the same time?

这里面提到,sqlite允许多个应用同时操作一个数据库文件,但由于它通过fcntl函数来控制读写锁,因此不能像其它的C/S模式数据库那样(如mysql),即可以同时读也可以同时写,sqlite只允许同一时刻读,如果同一时刻写将返回SQLITE_BUSY.同时还提到了由于fcntl函数在NFS文件系统中并不能始终执行正常,因此请避免在NFS文件系统中使用sqlite.

(8) Is SQLite threadsafe?

这里面提到,sqlite允许多线程打开同一个数据库,并分享数据信息,但它的线程安全性需要用户来保证,一方面在linux系统中需要添加编译参数THREADSAFE ,另一方面sqlite数据库打开的指针不能在不同的线程之间传递.

Sqlite是线程安全的,通常,为了启用这一功能,Sqlite必须在编译的时候设置THREADSAFE宏为1.缺省的情况下,windows的二进制库文件是以THREADSAFE模式编译的,但linux不是.

Threadsafe在上一章节中提到过两个或多个线程可以同时打开同一个Sqlite数据库,它们可以分别使用sqlite3_open函数返回的数据库句柄,但在多个线程中如果共用一个数据库句柄是非常不安全的.

一个数据库句柄只能被一个线程使用,你决不可以在一个线程中打开数据库,然后把返回的数据库句柄传递到另一个线程中使用,这是因为在很多线程实现如Readhat9中,如果一个线程使用fcntl()函数创建了一个锁,则它不能在其它线程中销毁或修改,因此,由于Sqlite频繁的使用了fcntl这个函数来控制加锁,如果在不同线程中传递数据库句柄,则可能带来越来越多的问题。

或许有很多其它方法可以代替fcntl来实现加锁,但它们都相对复杂或难以测试,因此Sqlite目前不允许在多个线程中共享相同的数据库句柄。

在unix系统下,你不能在fork产生的进程中打开sqlite数据库,这可能会带来未知的问题。

(9) How do I list all tables/indices contained in an SQLite database

sqlite中可以使用.table命令查看数据库中所有表,.schema命令查看数据库中表的详细结构.对于每个数据库都会有一个系统表SQLITE_MASTER,结构如下:

CREATE TABLE sqlite_master (
type
TEXT, //table或者index,表明这是表还是索引.
name
TEXT, //表或索引的名称.
tbl_name
TEXT, //索引的情况下,这个字段表明该索引对应的表名称.
rootpage
INTEGER,
sql
TEXT //存储表或索引创建时的sql语句.
);
 
 
而其它临时表将存储在同样结构的SQLITE_TEMP_MASTER表中.
 
(11) What is the maximum size of a VARCHAR in SQLite
 
sqlite的varchar类型对于长度是无限制的.
 
(14) I deleted a lot of data but the database file did not get any smaller. Is this a bug?
 
当删除数据库中记录时,数据文件并不会变小,而是将这部分使用过的空间记录下来,在下次进行插入操作时利用上.当然也可以使用VACUUM命令使数据库将空闲空间释放出来,但这会消耗一定时间,大约0.5S/M.
 
(16) How do I use a string literal that contains an embedded single-quote (') character?
 
使用两个'进行转义即可.
 
分享到:
评论

相关推荐

    Sqlite环境和开发资料

    SQLite的官方文档非常全面,包括用户指南、编程指南、管理员指南和FAQ等部分,覆盖了所有核心功能和高级主题。这些文档可以帮助开发者深入理解SQLite的工作原理,解决实际问题。 五、开发资料 在你获取的压缩包中,...

    sqlite3_doc文档

    SQLite3是一种轻量级、开源、自包含的SQL数据库引擎,广泛应用于移动设备、嵌入式系统以及桌面应用。SQLite3_doc文档包含了SQLite3数据库系统的...对于学习和使用SQLite3的开发者来说,这些文档是不可或缺的参考资料。

    sqlite-doc-3070900.zip

    通过阅读`sqlite-doc-3070900`中的文档,开发者不仅可以学习到SQLite的基本用法,还可以深入了解其内部工作机制,如事务处理、锁机制、存储引擎等。对于需要在应用程序中集成SQLite或者进行数据库设计与优化的开发者...

    dotnet_sqlite_winform

    总的来说,这个压缩包提供了一个用C#编写、SQLite支持的WinForm应用程序实例,对于学习.NET开发、SQLite数据库集成以及Windows桌面应用开发的人来说是一个很好的学习资源。它不仅包含了完整的源代码,还有打包和部署...

    sqlite3安装包

    文档是学习和解决问题的关键资源,SQLite3提供了详尽的在线文档,包括用户指南、API参考、FAQ等。你提到的博客文章(http://blog.csdn.net/hudan2714/article/details/7762467)可能提供了更具体的安装和使用教程,...

    sqlite数据库

    通过学习和理解SQLite的这些知识点,开发者能够有效地在项目中集成和使用SQLite,以满足各种数据管理需求。无论是简单的日志记录,还是复杂的应用程序数据存储,SQLite都能提供强大而灵活的支持。

    sqlite3.7.5资料

    SQLite3.7.5是一款轻量级的数据库引擎,它被广泛应用于嵌入式系统、移动设备以及需要在本地存储结构化数据的应用...通过深入学习和实践提供的文档资料,开发者能够充分利用SQLite的优势,创建出高效稳定的应用程序。

    Android高手过招 FAQ .zip

    这份名为"Android高手过招 FAQ .zip"的压缩包文件显然是一份非常实用的学习资源,包含了安卓项目源码、论文、参考资料以及学习资料,对于进行毕业设计、课程设计或是提升个人安卓开发技能来说都是宝贵的财富。...

    毕设&课程作业_FAQ智能问答系统。实现FAQ的问题-模板匹配功能。部署轻量级的Web服务应用。.zip

    3. **数据库管理**: 存储和检索FAQ数据,可能使用MySQL、SQLite或其他关系型数据库。 4. **Web框架**: 如Django、Flask或Express,用于构建Web服务应用。 5. **RESTful API设计**: 设计和实现接口,使得Web服务能够...

    下载-Android新手入门 FAQ.docx

    学习Android开发需要具备Java基础,理解面向对象编程的基本概念,例如数据类型、分支语句、循环语句、类和对象、函数、抽象类、接口、继承、多态、包、访问权限、异常处理和类集框架等。对于Eclipse IDE的使用也应...

    Android高手过招 FAQ(实用1).zip

    5. **数据存储**:理解SQLite数据库的使用,学习ContentProvider进行数据共享,以及SharedPreferences实现轻量级数据保存。 6. **网络编程**:掌握HttpURLConnection或OkHttp进行网络请求,理解异步加载数据的概念...

    基于Android的Android高手过招 FAQ.zip

    这份“Android高手过招FAQ”压缩包文件,旨在为那些正在学习和研究Android开发的同学们提供宝贵的指导和解答常见问题。无论你是使用Android Studio、IntelliJ IDEA还是Eclipse进行开发,都能从中受益。尽管现代开发...

    【计算机专业-Andorid项目源码100套之】Android高手过招 FAQ

    在本资源包中,我们聚焦于"Android高手过招 FAQ"这一主题,它是一个针对计算机专业,特别是Android开发的学习资料。这份资源包含了100套Android项目的源代码,旨在帮助开发者提升技能,解决实际开发中遇到的问题。让...

    课程设计Android高手过招 FAQ源代码下载

    标签 "android 源码软件 FAQ源代码" 明确指出,这份资料包含了Android应用的源代码,以及与之相关的FAQ,这将对学习和理解Android软件开发过程大有裨益。 Android是一个开源的操作系统,广泛应用于智能手机、平板...

    Android高手过招 FAQ.rar

    6. **数据库管理**:SQLite作为Android内置数据库,学习SQL语句和使用ContentProvider操作数据,有助于实现数据持久化。 7. **权限管理**:Android 6.0(API 23)引入了运行时权限,开发者需要了解如何动态请求和...

    Android开发FAQ.pdf

    Android开发FAQ涵盖了许多关于Android平台的基本知识,包括其定义、就业前景、主要特点、学习基础、编程语言和编程环境。以下是对这些知识点的详细说明: 1. **Android定义**: Android是由Google推出的开源移动...

Global site tag (gtag.js) - Google Analytics