65.9K
CodeProject 正在变化。 阅读更多。
Home

嵌入式 Firebird:功能齐全的嵌入式数据库,运行时仅需 2 MB

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.77/5 (58投票s)

2005年1月28日

2分钟阅读

viewsIcon

548447

downloadIcon

15275

一个展示 Firebird 数据库在嵌入方面的优势的例子。

Sample Image - screenshot.gif

嵌入式 Firebird 的优势

Firebird 是一个拥有20年历史全套功能(包括事务、存储过程、热备份、出色的可扩展性等)和友好的开源许可的数据库。 它是被忽视但极具吸引力的Microsoft JetMicrosoft MSDE 2000/SQL Express 2005的替代方案。 让我们来看看它如何在您的桌面应用程序中嵌入。 是什么让嵌入式 Firebird 成为嵌入的理想选择

  • 嵌入式运行时 < 2 MB(仅从一个 DLL + 一个 .NET 程序集开始)。 运行时通过简单复制即可部署,无需安装或组件注册。
  • 数据库文件(它只是一个单一文件)可以有任何名称和扩展名。 您可以将扩展名与您的应用程序关联。
  • 迁移到独立服务器再简单不过了。 只需将数据库文件复制到服务器并在您的客户端更改连接字符串即可。

使用嵌入式 Firebird

要在 .NET 中开始使用嵌入式 Firebird,您需要下载

  • 嵌入式 Firebird 引擎(当前稳定版本为 1.5.2)
  • Firebird ADO.NET 提供程序(当前稳定版本为 1.6.3)

在 Visual Studio .NET 中创建新项目后,添加对FirebirdSql.Data.Firebird.dll(来自 Firebird ADO.NET 提供程序安装)的引用,并将fbembed.dll(来自嵌入式 Firebird ZIP 包)复制到项目输出目录(例如,bin/Debug)。

Firebird ADO.NET 提供程序可以使用这样的连接字符串连接到独立的 Firebird 服务器

FbConnection c = new FbConnection("ServerType=0;User=SYSDBA;" + 
         "Password=masterkey;Dialect=3;Database=c:\\data\\mydb.fdb");

它可以这样连接到嵌入式 Firebird 数据库

FbConnection c = new FbConnection("ServerType=1;User=SYSDBA;" + 
                 "Password=masterkey;Dialect=3;Database=mydb.fdb");

使用嵌入式 Firebird 时,数据库路径可以相对于fbembed.dll

您会看到,从嵌入式 Firebird 切换到独立 Firebird,反之亦然,非常简单。

创建一个新数据库

有两种创建新数据库的方法

  • 以编程方式创建数据库。
  • 复制现有的数据库模板。

这取决于您选择哪种方式。 复制现有的数据库很容易(只需确保在复制之前未打开模板),所以让我们尝试以编程方式创建它。

Hashtable parameters = new Hashtable();
parameters.Add("User", "SYSDBA");
parameters.Add("Password", "masterkey");
parameters.Add("Database", @"mydb.fdb");
parameters.Add("ServerType", 1);
FbConnection.CreateDatabase(parameters);

照常继续

使用 Firebird ADO.NET 提供程序很容易。 您将重用您使用其他 ADO.NET 提供程序的经验。 它甚至有一些不错的功能,例如使用 MSSQL 样式调用存储过程

FbCommand cmd = new FbCommand("MYSTOREDPROCEDURE", 
            new FbConnection(connectionString));
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@first", "value1");
cmd.Parameters.Add("@second", "value2");
cmd.Connection.Open();
try
{
    cmd.ExecuteNonQuery();
}
finally
{
    cmd.Connection.Close();
}

有用资源

© . All rights reserved.