嵌入式数据库 SQLite Birkeley DB Firebird

嵌入式数据库(一) SQLite数据库(一)-----sqlite安装 阅读详情

 

嵌入式数据库与非嵌入式数据库的差别,在于运行模式的差别。并不是运行在嵌入式手持设备上的数据库就是嵌入式数据库,那种数据库我们通常称做嵌入式移动数据库。理论上讲,嵌入式设备一样可以运行网络数据库的服务端程序。
      嵌入式数据库是指运行在本机上、不用启动服务端的轻型数据库,它与应用程序紧密集成,被应用程序所启动,并伴随应用程序的退出而终止。
      从这个意义上讲,似乎所有单机数据库都可以算嵌入式数据库,比如Access,Paradox,DBF等等,因为它们都不用启动数据库服务器即可使用。然而,我们通常不将上述数据库归入嵌入式数据库,而只将它们归入“桌面数据库”,甚至“文件型数据库”,因为这些数据库的完备性、存储容量及性能方面存在较大的缺陷。
      嵌入式数据库支持的数据都是TB文件级别,更由于嵌入式数据库具备高性能的特点,可以预测,单机数据库的未来将是嵌入式数据库的天下。

嵌入式数据库三雄
     目前,嵌入式数据库市场主要由三个产品分割:SQLite,Birkeley DB,Firebird嵌入服务器版,巧的是,这三个数据库产品都是开源软件。

SQLite    主页:http://www.sqlite.org

SQLite诞生于2000年5月,这几年增长势头迅猛无比,目前版本是3.3.8。

SQLite的特点如下:

1、无需安装配置,应用程序只需携带一个动态链接库。

2、非常小巧,For Windows 3.3.8版本的DLL文件才374KB。

3、ACID事务支持,ACID即原子性、一致性、隔离性、和持久性(Atomic、Consistent、Isolated、和 Durable)。

4、数据库文件可以在不同字节顺序的机器间自由的共享,比如可以直接从Windows移植到Linux或MAC。

5、支持数据库大小至2TB。


Berkeley DB    主页:http://www.oracle.com/database/berkeley-db/index.html

Berkeley DB是由美国Sleepycat Software公司开发的一套开放源码的嵌入式数据库的程序库,它于1991年发布,号称“为应用程序开发者提供工业级强度的数据库服务”,可谓是老牌悍将。Sleepycat现已被甲骨文(ORACLE)公司收购。

Berkeley DB的特点如下:

1、嵌入式,无需安装配置。
2、为多种编程语言提供了API接口,其中包括C、C++、Java、Perl、Tcl、Python和PHP等等。
3、轻便灵活。它可以运行于几乎所有的UNIX和Linux系统及其变种系统、Windows操作系统以及多种嵌入式实时操作系统之下。
4、可伸缩。它的Database library才几百KB大小,但它能够管理规模高达256TB的数据库。它支持高并发度,成千上万个用户可同时操纵同一个数据库。


Firebird 嵌入服务器版(Embedded Server)   主页:http://www.firebirdsql.org
从Interbase开源衍生出的Firebird,充满了勃勃生机。虽然它的体积比前辈Interbase缩小了几十倍,但功能并无阉割。为了体现Firebird短小精悍的特色,开发小组在增加了超级服务器版本之后,又增加了嵌入版本,最新版本为2.0。

Firebird的嵌入版有如下特色:

1、数据库文件与Firebird网络版本完全兼容,差别仅在于连接方式不同,可以实现零成本迁移。
2、数据库文件仅受操作系统的限制,且支持将一个数据库分割成不同文件,突破了操作系统最大文件的限制,提高了IO吞吐量。
3、完全支持SQL92标准,支持大部分SQL-99标准功能。
4、丰富的开发工具支持,绝大部分基于Interbase的组件,可以直接使用于Firebird。
5、支持事务、存储过程、触发器等关系数据库的所有特性。
6、可自己编写扩展函数(UDF)。


嵌入式数据库特性对比

产品名称 SQLite   Berkeley DB   Firebird嵌入服务器版

当前版本: 3.3.8、4.5.20、2.0
速度:最快、快、快
稳定性:好、好、好
数据库容量:2TB、256TB、64TB
SQL支持:大部份SQL- 92、不支持、完全SQL-92与大部份SQL-99
Win32平台下最小体积:374KB、840KB、3.68MB
数据操纵:SQL、仅应用程序接口、SQL

开发接口:C, C++, PHP, Java, Delphi, Python .net(有些是第三方厂商开发的)

从以上对比中,我们可以看到,最短小精悍的是SQLite,它的性能也是最高的,Berkeley DB比较特殊,因为它不是用SQL语言来操纵数据的,Firebird嵌入版的体积对比之下显得稍大了些,但它对关系数据库特性的支持是最好的,如果要考虑到今后或许要将数据库升级成网络版本,就要选Firebird了。


嵌入式数据库开发布署举例
例1、用Delphi开发基于SQLite的单机版应用程序

因为SQLite自带C、C++、Java接口,所以我这里举用Delphi开发的例子。

使用组件:第三方组件ASQLite。

下载地址:http://www.aducom.com/cen/download.php?list.2

选择后边是.D的,就是for Delphi的组件。

下载解压之后,即可开始用Delphi打开dpk组件包编译安装。

如果您的Delphi版本比较高,比如是Delphi 2006,那么就编译asqlite3.dpk与asqlite3pkg.dpk,之后再安装asqlite3pkg.dpk包即可。

然后在Delphi组件面板里可以看得到ASQLite组件,如图:



现在就可以用它开发你的程序了,基于SQLite小巧的原因,特别推荐你在布署远程应用时用它,比如监控啊,木马啊什么的。

OK,为了使我们的例子更详细,下面讲讲怎么用ASQLite组件创建、连接数据库,并建立一个数据表。

新建一个窗体,放一个TASQLite3DB,命名为DB1,将它的Database(数据库)设为test.sqb,放一个TASQLite3Query,命名为Query1,将它的Connection指向DB1,然后放入两个按钮,第一个按钮的作用是创建或连接数据库,第二个按钮的作用是建立数据表。

如下图:


“连接”按钮事件的代码如下:

DB1.Open;

执行完这条语句之后,如果应用程序当前目录下不存在test.sqb文件,则自动创建并连接它。

“建表”按钮事件的代码如下:

   Query1.StartTransaction;

   try

Query1.Close;

Query1.SQL.Text:='create table student(sname vchar(30),age integer)';

Query1.ExecSQL;

Query1.Commit;

   except

Query1.RollBack;

   end;

执行完这些语句之后,在Test.sqb数据库里将创建数据表student。

现在,请将您下载的SQLite的动态链接库sqlite3.dll文件复制到应用程序目录下。

之后,可正常运行。

布署时,也应将sqlite3.dll文件一起打包。

例2、使用C++语言开发基于Firebird嵌入版的应用程序。

由于Firebird衍生于Interbase,所以Delphi对它的支持最好,IBX,DBX,Fibplus等都可以直接使用它,只要注意将接口文件改为fbembed.dll即可。在此不再多言。

对于C++这种最通用的语言,我们有一个更好的组件可以选择:IBPP。

IBPP主页:http://www.ibpp.org/

IBPP是用C++封装的Firebird接口,最新版本2.5.2.2。

只要在C++里引用all_in_one.cpp文件,就可以使用它的功能。

可以用IBPP:database类连接数据库,用IBPP::Transaction类控制事务,IBPP::Statement类可以获取数据集。下面展示一段代码,功能为:先连接d:/demo.fdb文件,然后从student表里选择所有记录,遍历所有记录之后,显示最后一条记录的sn与sname字段。为了使演示更直观,省去了异常处理。

示例代码:

#define IBPP_WINDOWS   //运行于Windows平台的预先声明

#include "ibpp/all_in_one.cpp"

……

IBPP:database db1;

db1=IBPP:databaseFactory("","d:/demo.fdb","sysdba","masterkey");

db1->Connect();

IBPP::Transaction tr1=IBPP::TransactionFactory(db1,IBPP::amWrite,

IBPP::ilConcurrency,IBPP::lrWait, IBPP::tfNoAutoUndo);

tr1->Start();

IBPP::Statement st1=IBPP::StatementFactory(db1,tr1);

st1->Prepare("select * from student");

st1->Execute();

std::string sn,sname;

st1->Fetch();

st1->Get(1,sn);

st1->Get(2,sname);

tr1->Commit();

Label1->Caption=sn.c_str();

Label2->Caption=sname.c_str();

最后2行语句为显示结果的,不同开发平台应该使用不同的方法演示,请勿直接复制源代码。

布署时,还应该带上如下文件:fbembed.dll,ib_util.dll,icudt30.dll,icuin30.dll,icuuc30.dll,为了更通用,还可以带上VC++ 7.1的运行库msvcp71.dll,msvcr71.dll两个文件。

嵌入式数据库——SQLite 轻量化,易用的嵌入式数据库,用于设备端的数据管理,可以理解成单点的数据库。传统服务器型数据库用于管理多端设备,更加复杂。 阅读详情

相关推荐

Java 生态圈中的嵌入式数据库,哪家强?,java编程思想和核心技术

Connection conn = DriverManager.getConnection(JDBC_URL, USER, PASSWORD); Statement statement = conn.createStatement(); //删除表 statement.execute(“DROP TABLE USER_INF”); //创建表 statement.execute(“CREATE TABLE USER_INF(id VARCHAR(50) PRIMARY KEY, name VARCHAR(5

m0_63174420的博客 711

嵌入式数据库

SQLite3是一个轻量级的关系型数据库管理系统,它遵循ACID(原子性、一致性、隔离性和持久性)原则,广泛用于嵌入式系统和应用程序中。通常可以通过将表的位置互换来实现右联接的效果,即使用左联接并调换表的位置。交叉联接用于生成两个表之间的笛卡尔积,即每个表的每一行与另一个表的每一行进行组合。左联接返回左表中的所有记录,即使在右表中没有匹配的记录。如果右表中没有匹配的记录,则结果中右表的列将包含空值(NULL)。只有当两个表中的记录满足联接条件时,才会包含在结果中。关键字,按列的值从小到大排序。

a8687216的博客 3200

Superpowers:可编程AI协作协议与Skill工程化实践

AI编程正从提示词驱动迈向工程化协作新范式。Superpowers并非传统代码补全工具,而是一套定义清晰、可版本控制、可调试复用的AI协作协议——它将AI能力抽象为带输入校验、执行管道、输出契约和元数据声明的Skill(类DSL构件),再通过状态驱动的Workflow编排实现跨平台、可熔断、含人工Checkpoint的自动化流水线。其核心价值在于解决AI生成代码长期存在的不可复现、不可审计、不可交接三大痛点,支撑OpenAPI转TS、Figma转Vue等高复用场景落地。本文深入解析Skill设计四重契约与P

weixin_31124163的博客 376

嵌入式数据库--sqlite

SQLite 是一个轻型的数据库系统,它不需要一个单独的服务器进程或操作系统,也不需要配置和管理等繁琐的工作。SQLite 主要包括以下几个概念:数据库文件:SQLite 基于文件的方式进行存储,每个数据库对应一个文件,文件以 .db 为后缀名。数据库文件中包含了一个或多个表,表包含了多个数据行。表:表是 SQLite 中的基本数据存储单位。一个表由多个字段组成,每个字段对应表中一列数据。字段:表中的每个列称为一个字段,字段包含了数据的类型、长度等信息。

xinqi_1的博客 1417

Excel聚光灯效果终极指南:VBA代码实现与条件格式避坑技巧

本文详细解析了Excel聚光灯效果的实现方法,包括VBA代码优化与条件格式的避坑技巧。通过模块化编程和性能优化技术,帮助用户高效处理大型数据表格,实现自定义高亮显示,提升数据分析和报表阅读体验。

v6b7n8m9q0的博客 456

MTK PE+2.0介绍

  PE+2.0介绍:   1.      PE+2.0的状态机: 2.      升压波形协议及编码规则: PE+2.0软件设计:   在充电器类型为标充且底层电量SOC在1%—95%之间时,开始PE+2.0升压充电器的检测:首先将VBUSreset至5V,之后发送8.5的current pattern再获取此时VBUS电压和8.5V比较,若其与8.5的差值绝对值在0.5之...

raydom07的博客 1万+

嵌入式数据库比较(SQLite Birkeley DB Firebird)

来自:http://www.360doc.com/content/11/0321/10/59141_103107315.shtml; 由于没法复制,需要看的同仁,直接点击上面那个网址就ok了。

317

AgentFlow:模块化智能体框架与Flow-GRPO强化学习实战解析

在人工智能领域,大语言模型(LLM)与智能体(Agent)技术正推动着自动化任务处理的发展。其核心原理在于通过规划、执行与反馈的循环,使AI系统能够自主调用工具解决复杂问题。这一技术的价值在于突破单一模型的局限性,实现更可靠的多步骤推理。在实际应用中,智能体框架需要处理搜索、代码执行、数学计算等多种场景。本文聚焦的AgentFlow框架,正是通过模块化设计将智能体拆分为规划者、执行者、验证者和生成者四个专家模块,并引入Flow-GRPO强化学习算法进行流程内优化。该框架在搜索增强与工具调用等任务上展现出显著

weixin_42311427的博客 367

网络编程——嵌入式数据库(sqlite)

Oracle公司是最早开发关系数据库的厂商之一,其技术支持最广泛的操作系统平台。- SQLite的源码是C语言,其源代码完全开发,SQLite第一个Alpha版本诞生于2000年5月,他是一个轻量级的嵌入式数据库。- mySQL是一个小型关系数据库管理系统,开发爱着为瑞典MySQL AB公司,2008年被Sun公司收购,开放源码。- IBM 的 DB2是第一个具备网上功能的多媒体关系数据库管理系统,支持包linux在内的一系列平台。- Server是微软开发的数据库产品,主要支持windows平台。

weixin_61921209的博客 274

别再凭感觉选电容了!手把手教你计算电机控制器里的母线电容(附Excel计算工具)

本文详细解析了电机控制器中母线电容的选型方法,从理论计算到工程实践,帮助工程师避免常见误区。通过精确计算纹波电压、电容容量等关键参数,并结合薄膜电容与电解电容的性能对比,提供实用的选型建议。附带的Excel计算工具可快速完成参数计算,适用于工业伺服驱动和电动车电机控制器设计。

weixin_28720573的博客 518

微信小程序 - 实现Java微信支付退款功能以及退款流程,微信小程序前端+java后端完整示例源码,微信小程序退款功能详解,小程序订单申请退款和退款回调方法、查询退款等(新版微信支付,详细示例代码)

微信小程序开发-微信支付退款功能以及退款回调方法,微信支付退款API详解,微信小程序支付V3(支付、退款)Java实现微信小程序开发 小程序支付开发-小程序退款功能,微信小程序小程序和公众号 退款功能教程(含申请退款和退款回调,退款回调地址在商户后台配置或者代码自定义)最新版微信小程序支付,退款问题,小程序支付和退款功能详解,小程序申请退款,小程序处理退款,微信小程序支付与退款java,微信小程序退款及回调,JAVA实现微信小程序支付退款功能,退款api调用报错,如何解决退款申请无响应,如何用实现小程序订单

🏆 前端领域优质创作者 4159

【ARM-Linux篇】嵌入式数据库

嵌入式数据库

m0_66492811的博客 1775

24. SAP 标准产品里使用 OData 服务的一些细节分享

笔者在编写使用事物码 SEGW 开发 SAP OData 服务的系列步骤时,但凡遇到技术上一些疑难问题,喜欢去参照 SAP 标准产品里是如何使用 OData 服务的,不少问题都可以去参考 SAP 标准产品的 OData 服务实现细节来解决。 因此本文记录笔者在编写本教程的过程中,曾经研究过的 SAP OData 服务实现的一些细节,把这些细节分享给大家,希望能起到参考作用。 同时,教程也不断收到一些朋友在评论区留言,对于不少留言的回复,我也是拿 SAP 标准 OData 服务的实现作为论据来回复的。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2030

SQLite 嵌入式数据库

轻量化,易用的嵌入式数据库,用于设备端的数据管理,可以理解成单点的数据库。传统服务器型数据库用于管理多端设备,更加复杂SQLite是一个无服务器的数据库,是自包含的。这也称为嵌入式数据库,这意味着数据库引擎作为应用程序的一部分运行MySQL需要运行服务器,MySQL将需要客户端和服务器架构通过网络进行交互SQLite的优点SQLite的缺点MySQL的优点MySQL的缺点基于文件,易于设置和使用适合基础开发和测试轻松携带使用标准SQL语法进行微小更改使用方便缺乏用户管理和安全功能。

莘莘的博客 1217

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

常用的几种嵌入式数据库

1.MySQL的体积比较小,它是一个关系型的数据库管理系统,是由瑞典MySQL AB公司开发出来的,由于MySQL体积小、速度快、总体成本低,特别是它的源码的开放特点,许多中小型网站为了降低网站的总体成本,都选择了MySQL数据库。目前在Internet上的中小型网站的服务器上,MySQL得到了广泛的应用。MySQL的特征如下: (1)源代码采用C和C++语言编写,并且使用了多种编译器进行测试,

肖氏专栏 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

嵌入式数据库是什么

SQLite,是一款轻型的数据库,其设计目标是嵌入式的数据库,而且当前在很多嵌入式产品中使用到了sqlite数据库,sqlite数据库占用资源非常的低,对嵌入式设备而言,内存是非常宝贵的,而sqlite数据库可能只需要几百K的内存就够了。同时能够跟很多程序语言相结合,比如C#、PHP、Java,C等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快,比起Oracle数据库来说,免费也是极大的优势。// 查找符号条件的记录。

m0_70888041的博客 863

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java 生态圈中的嵌入式数据库,哪家强?

每天早上七点三十,准时推送干货嵌入式数据库一个很陌生的词汇,以前只是听说,但是没有真正使用过,今天阿粉和大家一起来揭开它的面纱。一、介绍初次接触嵌入式数据库(Embedded Datab...

Java极客技术 1428

三种主要嵌入式数据库

什么是嵌入式数据库嵌入式数据库与非嵌入式数据库的差别,在于运行模式的差别。并不是运行在嵌入式手持设备上的数据库就是嵌入式数据库,那种数据库我们通常称做嵌入式移动数据库。理论上讲,嵌入式设备一样可以运行网络数据库的服务端程序。嵌入式数据库是指运行在本机上、不用启动服务端的轻型数据库,它与应用程序紧密集成,被应用程序所启动,并伴随应用程序的退出而终止。从这个意义上讲,似乎所有单机数据库都可

zy1691的专栏 1万+

2024年最全嵌入式数据库(Embedded Database)_嵌入式数据库有哪些,你值得拥有

UnQLite用来在数据库中存储JSON文档(如,对象、数组、字符串等)的文档存储接口,是通过Jx9编程语言支撑/实现的。Jx9是一种嵌入式的脚本语言,也叫扩展语言,被设计用于通用过程化编程,具备数据表述的特性。UnQLite是,100%手工编码,使用ANSI C,线程安全,完全可重入,编译无需修改,而且可运行于绝大多数的平台,包括受限的嵌入式设备,仅需要一个C编译器。2、数据库文件仅受操作系统的限制,且支持将一个数据库分割成不同文件,突破了操作系统最大文件的限制,提高了IO吞吐量。

2401_85015212的博客 2611

嵌入式数据库之sqlite3

sqlite> create table stu1 as select id, name, score from stu//创建一张新的表。―在程序运行过程中,当需要进行数据库操作时,应用程序会首先尝试打开数据库,此时如果数据库并不存在,程序则会自动建立数据库,然后再打开数据库。sqlite> alter table stu1 rename to stu//讲新的表名字改成原有旧表的名字。IBM 的DB2是第一个具备网上功能的多媒体关系数据库管理系统,支持包Linux在内的一系列平台。

qq_43341187的博客 1995

嵌入式数据库(Embedded Database)

来源:嵌入式数据库(Embedded Database) - 知乎 嵌入式数据库(Embedded Database)和数据库服务器(Database Server) 像Oracle、Sybase、MySQL和SQL Server这些大家熟知的数据库都属于数据库服务器(当然不排除某些也提供嵌入式版本),而像SQLite、Berkeley DB等属于嵌入式数据库。 嵌入式数据库跟数据库服务器最大的区别在于它们运行的地址空间不同。通常,数据库服务器独立地运行一个守护进程(daemon),而嵌入式数据库与..

gb4215287的博客 2062
上一篇: 合并GridView中某列相同信息的行
下一篇: C# windows mobile 控制手机背景灯光
love_study
博客等级 码龄22年 18粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值