`
chinamming
  • 浏览: 151381 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

SQlite数据库的C编程接口(八) 工具函数(Utility Functions) ——《Using SQlite》读书笔记

 
阅读更多

SQlite数据库的C编程接口(八) 工具函数(Utility Functions) by斜风细雨QQ:253786989 2012-02-10

SQLite还有一些比较有用的工具函数,虽然对于基本的数据库任务可能不需要使用它们。

版本管理(VersionManagement

(1)

  1. constchar*sqlite3_libversion(void);

UTF-8编码字符串的形式,返回SQLite库的版本。SQLite还定义了一个宏:SQLITE_VERSION,它的值也是代表SQLite库版本的UTF-8编码字符串。

如:#define SQLITE_VERSION "3.7.10"

(2)

以一个整形数的形式,返回SQLite库的版本,格式是MNNNPPPM是主版本号,对于SQLite3数据库,M的值为3。N是次版本号,P代表发行点。

宏定义SQLITE_VERSION_NUMBER,与sqlite3_libversion_number函数功能相同。

如:#define SQLITE_VERSION_NUMBER 3007010

(3)

  1. constchar*sqlite3_sourceid(void);

返回一个字符串指针,指向的字符串中包含日期、时间戳和一个SHA1哈希值。宏定义SQLITE_SOURCE_ID的功能与该函数相同。

如:#define SQLITE_SOURCE_ID "2012-01-16 16:56:31 93aa17d866873e11dde5ffbefe74497f229977c1"

程序员可以利用上面的几个函数和对应的宏定义来验证SQLite库的版本。宏定义来自头文件sqlite.h中,而函数调用获取的版本号来自程序所链接的SQLitelibrary中。

如:

  1. if(SQLITE_VERSION_NUMBER>sqlite3_libversion_number()){
  2. /*librarytooold;reporterrorandexit.*/
  3. }

在这段程序中,SQLITE_VERSION_NUMBER的值来自我们的客户应用程序在编译时所使用的sqlite.h头文件中。而sqlite3_libversion_number()函数调用所返回的版本号,来自应用程序运行时所连接的library的版本。所以在我们的应用程序中,可以做如上代码的比较,以判断应用程序运行时,所连接的library是否比我们的应用程序编译时所使用的版本低,如果是则发出错误报告或者退出程序。

内存管理(MemoryManagement

SQLite需要动态分配一块内存时,它通常是调用底层操作系统默认的内存处理函数,使SQLite从应用程序堆中分配内存。然而,程序员可以通过sqlite3_config函数配置SQLite,使其进行自己的内部的内存管理。这对于嵌入式和手持终端等内存受限的设备来说非常重要,过度分配内存会给系统稳定性带来问题。

(1)

  1. void*sqlite3_malloc(int);

分配一块由参数指定的字节大小的buffer,返回buffer指针。如果内存分配失败,则返回NULL。所分配的内存总是8字节(64位)对齐,该函数是c标准库函数malloc的替代品。

(2)

  1. void*sqlite3_realloc(void*,int);

该函数用于重新调整内存分配。第1个参数是由sqlite3_malloc函数返回的buffer指针,第2个参数是调整之后的buffer字节大小。sqlite3_realloc函数将根据其第2个参数所指定的字节大小,分配一块新的buffer。然后将第1个参数所指向的旧buffer中的内容尽可能多的copy到新的buffer中。然后释放旧buffer,并返回新buffer指针。如果新buffer分配失败,将返回NULL,并且旧的buffer不会被释放。

如果调用sqlite3_realloc函数时,给其第2个参数传递0或者负值,则该函数调用相当于调用sqlite3_free函数释放内存。

sqlite3_realloc函数是c标准库函数realloc的替代品。

(3)

  1. voidsqlite3_free(void*);

释放由sqlite3_malloc函数或者sqlite3_realloc函数分配的内存。该函数是c标准库函数free的替代品。

因为sqlite3_xxx版本的内存管理函数是在SQLite内部环境中进行操作,所以使用这些函数比使用操作系统底层的内存管理函数有更好的可移植性和可靠性。

SQlite数据库的C编程接口(八) 工具函数(Utility Functions) by斜风细雨QQ:253786989 2012-02-10

SQlite数据库的C编程接口(八) 工具函数(Utility Functions) by斜风细雨QQ:253786989 2012-02-10

SQLite还有一些比较有用的工具函数,虽然对于基本的数据库任务可能不需要使用它们。

版本管理(VersionManagement

(1)

  1. constchar*sqlite3_libversion(void);

UTF-8编码字符串的形式,返回SQLite库的版本。SQLite还定义了一个宏:SQLITE_VERSION,它的值也是代表SQLite库版本的UTF-8编码字符串。

如:#define SQLITE_VERSION "3.7.10"

(2)

以一个整形数的形式,返回SQLite库的版本,格式是MNNNPPPM是主版本号,对于SQLite3数据库,M的值为3。N是次版本号,P代表发行点。

宏定义SQLITE_VERSION_NUMBER,与sqlite3_libversion_number函数功能相同。

如:#define SQLITE_VERSION_NUMBER 3007010

(3)

  1. constchar*sqlite3_sourceid(void);

返回一个字符串指针,指向的字符串中包含日期、时间戳和一个SHA1哈希值。宏定义SQLITE_SOURCE_ID的功能与该函数相同。

如:#define SQLITE_SOURCE_ID "2012-01-16 16:56:31 93aa17d866873e11dde5ffbefe74497f229977c1"

程序员可以利用上面的几个函数和对应的宏定义来验证SQLite库的版本。宏定义来自头文件sqlite.h中,而函数调用获取的版本号来自程序所链接的SQLitelibrary中。

如:

  1. if(SQLITE_VERSION_NUMBER>sqlite3_libversion_number()){
  2. /*librarytooold;reporterrorandexit.*/
  3. }

在这段程序中,SQLITE_VERSION_NUMBER的值来自我们的客户应用程序在编译时所使用的sqlite.h头文件中。而sqlite3_libversion_number()函数调用所返回的版本号,来自应用程序运行时所连接的library的版本。所以在我们的应用程序中,可以做如上代码的比较,以判断应用程序运行时,所连接的library是否比我们的应用程序编译时所使用的版本低,如果是则发出错误报告或者退出程序。

内存管理(MemoryManagement

SQLite需要动态分配一块内存时,它通常是调用底层操作系统默认的内存处理函数,使SQLite从应用程序堆中分配内存。然而,程序员可以通过sqlite3_config函数配置SQLite,使其进行自己的内部的内存管理。这对于嵌入式和手持终端等内存受限的设备来说非常重要,过度分配内存会给系统稳定性带来问题。

(1)

  1. void*sqlite3_malloc(int);

分配一块由参数指定的字节大小的buffer,返回buffer指针。如果内存分配失败,则返回NULL。所分配的内存总是8字节(64位)对齐,该函数是c标准库函数malloc的替代品。

(2)

  1. void*sqlite3_realloc(void*,int);

该函数用于重新调整内存分配。第1个参数是由sqlite3_malloc函数返回的buffer指针,第2个参数是调整之后的buffer字节大小。sqlite3_realloc函数将根据其第2个参数所指定的字节大小,分配一块新的buffer。然后将第1个参数所指向的旧buffer中的内容尽可能多的copy到新的buffer中。然后释放旧buffer,并返回新buffer指针。如果新buffer分配失败,将返回NULL,并且旧的buffer不会被释放。

如果调用sqlite3_realloc函数时,给其第2个参数传递0或者负值,则该函数调用相当于调用sqlite3_free函数释放内存。

sqlite3_realloc函数是c标准库函数realloc的替代品。

(3)

  1. voidsqlite3_free(void*);

释放由sqlite3_malloc函数或者sqlite3_realloc函数分配的内存。该函数是c标准库函数free的替代品。

因为sqlite3_xxx版本的内存管理函数是在SQLite内部环境中进行操作,所以使用这些函数比使用操作系统底层的内存管理函数有更好的可移植性和可靠性。

SQlite数据库的C编程接口(八) 工具函数(Utility Functions) by斜风细雨QQ:253786989 2012-02-10

分享到:
评论

相关推荐

    SQLite数据库C语言编程的demo示例

    内容概要:这是一个通过显式调用(dlopen)方式,使用SQLite库API函数C语言编程的demo示例。里面包含了SQLite数据库文件的创建、数据库表创建、插入、修改、删除、查询等功能操作。该资源包中的程序有在Ubuntu环境下...

    SQLite数据库 加密解密工具

    SQLite数据库是一种轻量级、自包含的SQL数据库引擎,常被用在嵌入式系统和移动应用中。在处理敏感数据时,为了保护信息安全,对SQLite数据库进行加密是必要的步骤。本文将详细介绍如何使用.NET环境下的SQLite加密...

    SQLite数据库打开工具

    常见的SQLite数据库管理工具有SQLiteStudio、DB Browser for SQLite (formerly known as SQLite Manager)、SQLite Administrator、SQLite Expert Personal等。这些工具都有各自的优点和特色,例如SQLiteStudio以其...

    SQLiteCompareSetup(SQLite数据库比较工具)

    SQlite数据库工具 供比较两个SQLite数据库所用。

    Delphi版SQLite数据库工具

    Delphi版SQLite数据库工具是一款专为开发者设计的实用软件,主要用于在Delphi编程环境中与SQLite数据库进行交互。SQLite是一款轻量级、自包含的数据库引擎,广泛应用于嵌入式系统和移动应用,因其高效性和无需服务器...

    基于Qt4的SQLite数据库应用编程

    标题“基于Qt4的SQLite数据库应用编程”揭示了文档将要介绍的知识点,即如何在Qt4框架下进行SQLite数据库的应用编程。从描述中我们知道,Qt是一个由挪威TrollTech公司开发的C++图形用户界面应用程序框架,支持跨平台...

    Sqlite数据库加密、修改密码工具

    Sqlite数据库加密、解密工具,主要是用于进行给Sqlite数据库进行加密,修改密码的工具

    基于Qt4的SQLite数据库应用编程.pdf

    ### 基于Qt4的SQLite数据库应用编程 #### 概述 《基于Qt4的SQLite数据库应用编程》是一篇详细介绍如何在Qt4框架下利用SQLite数据库进行应用程序开发的技术文章。作者潘学文和文汉云来自长江大学计算机科学学院,...

    Android中SQLite数据库查看工具

    SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 就像其他数据库,SQLite 引擎不是一个...

    sqlite 数据库加解密工具 绿色版v2

    这个“SQLite 数据库加解密工具 绿色版v2”显然是专门针对 SQLite 数据库进行加密和解密操作的一款软件。在本文中,我们将详细探讨 SQLite 数据库的加密与解密原理,以及可能使用的工具和技术。 1. **SQLite 数据库...

    Sqlite数据库编辑工具

    总的来说,SQLite数据库编辑工具是开发人员、数据库管理员和普通用户进行SQLite数据库操作的重要工具,其中文版的出现无疑为国内用户提供了更友好的使用体验,使得SQLite数据库的管理和维护变得更加轻松。...

    使用C#开发的Sqlite数据库创建、操作的源码项目工程

    这是一个使用C#开发的Sqlite数据库创建、操作的源码工程,关于Sqlite的所有操作已经单独创建了专门的跨平台【.NETCore3.1】类库包含相应的帮助类,可以直接生成后拿到任何项目中直接使用,高效简单,省去了从头开发...

    SQLite数据库逆向分析1

    SQLite数据库逆向分析 ...在SQLite数据库逆向分析中,我们需要寻找SQLite数据库中回调函数的样板,以便于了解数据库的实现机理和数据结构。通过分析函数的调用过程,我们可以了解数据库的数据结构和实现机理。

    sqlite 数据库管理工具

    SQLite数据库管理工具是一种轻量级但功能强大的数据库管理系统,尤其适用于个人项目或小型应用程序的数据存储。SQLite Studio是一款针对SQLite数据库的图形用户界面(GUI)工具,它提供了中文界面,使得国内用户在...

    LabVIEW使用SQLite数据库范例(需要自行下载SQLite的工具包)

    SQLite官方提供了一个C语言编写的库,可以与多种编程语言接口,包括LabVIEW。下载完成后,将库导入到你的LabVIEW项目中,以便调用相关的函数和方法。 接着,让我们看看如何创建一个SQLite数据库。在LabVIEW中,你...

    Sqlite数据库加密小工具

    这就引出了我们今天的主题——SQLite数据库的加密。 SQLite提供了多种加密解决方案,以保护数据免受未经授权的访问。其中一种常见的方法是使用第三方扩展,如SQLCipher。SQLCipher是一个为SQLite提供透明256位AES...

    VB6.0 操作SQLite 数据库的完整示例代码

    在VB6.0中操作SQLite数据库,是一种将轻量级、高性能的SQLite数据库与传统的Visual Basic编程环境相结合的方法。SQLite是一种自包含、无服务器、零配置、事务性的SQL数据库引擎,广泛应用于移动设备、嵌入式系统以及...

    SQLite数据库查看工具(SQLiteBrowser)

    SQLite数据库是一种轻量级、开源的嵌入式关系数据库,广泛应用于移动应用、小型桌面应用以及需要快速存储和检索数据的任何系统。SQLiteBrowser是一款免费且开源的图形用户界面工具,用于浏览、编辑和管理SQLite...

    sqlite3 C语言接口

    SQLite3 C 语言接口是 SQLite3 数据库管理系统提供的一种编程接口,允许 C 语言程序员使用 SQLite3 数据库。该接口提供了一系列函数和数据结构,用于创建、操作和管理 SQLite3 数据库。 快速入门 SQLite3 C 语言...

    SqLite数据库操作工具

    SQLite数据库操作工具使得用户能够方便地管理和操作SQLite数据库,进行数据的增删改查等操作,而无需深入了解复杂的SQL语法或数据库管理系统。 SQLite Studio是一款非常实用的SQLite数据库管理工具,它提供了一个...

Global site tag (gtag.js) - Google Analytics