`

在C#中使用FireBird嵌入式数据库

阅读更多
Firebird脱胎于Borland公司的开源版数据库Interbase6.0,是一个完全非商业化的产品, 用C和C++开发。由于与interbase的血缘关系,大部分interbase的开发工具可以直接应用 到Firebird开发中。

Firebird 2.0项目已于2005年2月份开发完成,2005年5月发布。下面列举一些Firdbird 2.0新增加的功能:


  • 对SQL标准支持增强:支持SQL200X标准定义的“派生表”(derived tables)、为了和SQL-99标准一致,引进了“SEQUENCE”,用来代替“GENERATOR”;
  • 经典结构模式(Classic architecture)支持全部API;
  • 支持64位操作系统平台;
  • 内置函数增加;
  • 存储过程语言(PSQL)增强:支持“显式游标”、存储过程支持默认参数、支持“LEAVE标号”语法、将用户自定义函数(UDF)作为存储过程调用等;
  • 索引得到增强:252字节限制取消、支持“表达式索引”等;
  • 改进的优化器;
  • 安全增强:安全数据库结构改变、口令加密更安全、远程不能访问安全数据库、阻止“暴力破解”行为;
  • 在线增量备份。



FireBird有多种版本,包括服务器版,单机版以及嵌入式,不管是服务器版还是嵌入式版它都完整支持视图、触发器、存储过程等SQL高级特性。

部署嵌入式FireBird十分简单,只需要把 fb Embedded Server 的"fbembed.dll"拷贝到应用程序目录下。在.net的工程项目中则可以包含fbembed.dll文件,并将其属性设置为“copy always"或者"copy if newer"即可。


在C#中使用嵌入方Firebird需要.net provider 1.6以上版本,典型的ConnectionString如下:

"User=SYSDBA;Password=masterkey;Database=ray_linn.fdb;Charset=NONE;ServerType=1"

ServerType可取值“0”或者“1”,“0”表明连接对象为普通服务器,“1”才是嵌入式服务器。但对于编程者来说,这一切都是透明的。

我们可以通过FbDataAdapter或者FbConnection来从FireBird数据库获取数据(而不论是普通服务器还是嵌入式)。

1.FBConnection

            FbConnection connection = new FbConnection("User=SYSDBA;Password=masterkey;Database=ray_linn.fdb;Charset=NONE;ServerType=1");
            connection.Open();
            FbTransaction transaction = connection.BeginTransaction();

            string str= "SELECT * FROM TABLE1";
            FbCommand command = new FbCommand(str, connection, transaction);

            FbDataReader reader = command.ExecuteReader();
            reader.Read();
            while (reader.Read())
            {
                Console.WriteLine(reader.GetInt32(0) + ", " + reader.GetString(1));
            }
            

            transaction.Commit();

            connection.Close();


或者FbAdapter
            FbDataAdapter da = new FbDataAdapter("SELECT * FROM table1", "User=SYSDBA;Password=masterkey;Database=ray_linn.fdb;Charset=NONE;ServerType=1");
 
            DataSet ds = new DataSet();
            da.Fill(ds);
            DataTable dt = new DataTable();
            da.Fill(dt);
            dt.TableName = "Test";
            dt.WriteXml("test2.xml");


我们还可以通过C#来建立Firebird数据库。
String str="User=SYSDBA;Password=masterkey;Database=ray_linn.fdb;Charset=NONE;ServerType=1";
FbConnection.CreateDatabase(str);

// parse the SQL script
FbScript script = new FbScript(pathScript);
script.Parse();

            // execute the SQL script
using (FbConnection c = new FbConnection(str))
{
   FbBatchExecution fbe = new FbBatchExecution(c);
   foreach (string cmd in script.Results)
    {
       fbe.SqlStatements.Add(cmd);
     }
     fbe.Execute();
}


pathScript存放SQL脚本的路径,比如这个
CREATE TABLE TABLE1 (
    ID         INTEGER,
    FIRSTNAME  VARCHAR(50),
    LASTNAME   VARCHAR(50)
);

INSERT INTO TABLE1 (ID, FIRSTNAME, LASTNAME) VALUES (1, 'John', 'Doe');
INSERT INTO TABLE1 (ID, FIRSTNAME, LASTNAME) VALUES (2, 'Jane', 'Doe');

COMMIT WORK;


如果你使用Ibatis.net或者NHibernate连接嵌入式Firebird。

很遗憾的告诉你,Firebird的.net provider有一些bugs,不同版本会导致不一样的错误。这里提供一个我自己修改的FireBird Provider(版本1.7.2.0),修正了不兼容的错误,可以用于ibatis.net或Nhibernate,当然你必须自己承担使用后果。该provider只能工作在.net 3.5上(因为我习惯用最新的framework的语法)。

个人觉得FireBird的.net provider编码质量并不高,我可能会花上一些时间对其做些改进,如果你使用中有任何问题,可以与我联系。

the attached is firebird .net provider which is compatible with ibatis.net and NHibernate, need .net 3.5 supported.
分享到:
评论
3 楼 lobbychmd 2009-06-12  
fb我用过,delphi、ruby、python、.net 都挺好用。就是作为嵌入数据库好像支持的设备很少啊。
2 楼 mathgl 2009-05-24  
firebird貌似性能不错,打算用嵌入式来存放我的空间索引。
1 楼 kimmking 2009-05-12  
ray_linn 写道
Firebird脱胎于Borland公司的开源版数据库Interbase6.0,是一个完全非商业化的产品, 用C和C++开发。由于与interbase的血缘关系,大部分interbase的开发工具可以直接应用 到Firebird开发中。

Firebird 2.0项目已于2005年2月份开发完成,2005年5月发布。下面列举一些Firdbird 2.0新增加的功能:


  • 对SQL标准支持增强:支持SQL200X标准定义的“派生表”(derived tables)、为了和SQL-99标准一致,引进了“SEQUENCE”,用来代替“GENERATOR”;
  • 经典结构模式(Classic architecture)支持全部API;
  • 支持64位操作系统平台;
  • 内置函数增加;
  • 存储过程语言(PSQL)增强:支持“显式游标”、存储过程支持默认参数、支持“LEAVE标号”语法、将用户自定义函数(UDF)作为存储过程调用等;
  • 索引得到增强:252字节限制取消、支持“表达式索引”等;
  • 改进的优化器;
  • 安全增强:安全数据库结构改变、口令加密更安全、远程不能访问安全数据库、阻止“暴力破解”行为;
  • 在线增量备份。



FireBird有多种版本,包括服务器版,单机版以及嵌入式,不管是服务器版还是嵌入式版它都完整支持视图、触发器、存储过程等SQL高级特性。

部署嵌入式FireBird十分简单,只需要把 fb Embedded Server 的"fbembed.dll"拷贝到应用程序目录下。在.net的工程项目中则可以包含fbembed.dll文件,并将其属性设置为“copy always"或者"copy if newer"即可。


在C#中使用嵌入方Firebird需要.net provider 1.6以上版本,典型的ConnectionString如下:

"User=SYSDBA;Password=masterkey;Database=ray_linn.fdb;Charset=NONE;ServerType=1"

ServerType可取值“0”或者“1”,“0”表明连接对象为普通服务器,“1”才是嵌入式服务器。但对于编程者来说,这一切都是透明的。

我们可以通过FbDataAdapter或者FbConnection来从FireBird数据库获取数据(而不论是普通服务器还是嵌入式)。

1.FBConnection

            FbConnection connection = new FbConnection("User=SYSDBA;Password=masterkey;Database=ray_linn.fdb;Charset=NONE;ServerType=1");
            connection.Open();
            FbTransaction transaction = connection.BeginTransaction();

            string str= "SELECT * FROM TABLE1";
            FbCommand command = new FbCommand(str, connection, transaction);

            FbDataReader reader = command.ExecuteReader();
            reader.Read();
            while (reader.Read())
            {
                Console.WriteLine(reader.GetInt32(0) + ", " + reader.GetString(1));
            }
            

            transaction.Commit();

            connection.Close();


或者FbAdapter
            FbDataAdapter da = new FbDataAdapter("SELECT * FROM table1", "User=SYSDBA;Password=masterkey;Database=ray_linn.fdb;Charset=NONE;ServerType=1");
 
            DataSet ds = new DataSet();
            da.Fill(ds);
            DataTable dt = new DataTable();
            da.Fill(dt);
            dt.TableName = "Test";
            dt.WriteXml("test2.xml");


我们还可以通过C#来建立Firebird数据库。
String str="User=SYSDBA;Password=masterkey;Database=ray_linn.fdb;Charset=NONE;ServerType=1";
FbConnection.CreateDatabase(str);

// parse the SQL script
FbScript script = new FbScript(pathScript);
script.Parse();

            // execute the SQL script
using (FbConnection c = new FbConnection(str))
{
   FbBatchExecution fbe = new FbBatchExecution(c);
   foreach (string cmd in script.Results)
    {
       fbe.SqlStatements.Add(cmd);
     }
     fbe.Execute();
}


pathScript存放SQL脚本的路径,比如这个
CREATE TABLE TABLE1 (
    ID         INTEGER,
    FIRSTNAME  VARCHAR(50),
    LASTNAME   VARCHAR(50)
);

INSERT INTO TABLE1 (ID, FIRSTNAME, LASTNAME) VALUES (1, 'John', 'Doe');
INSERT INTO TABLE1 (ID, FIRSTNAME, LASTNAME) VALUES (2, 'Jane', 'Doe');

COMMIT WORK;


如果你使用Ibatis.net或者NHibernate连接嵌入式Firebird。

很遗憾的告诉你,Firebird的.net provider有一些bugs,不同版本会导致不一样的错误。这里提供一个我自己修改的FireBird Provider(版本1.7.2.0),修正了不兼容的错误,可以用于ibatis.net或Nhibernate,当然你必须自己承担使用后果。该provider只能工作在.net 3.5上(因为我习惯用最新的framework的语法)。

个人觉得FireBird的.net provider编码质量并不高,我可能会花上一些时间对其做些改进,如果你使用中有任何问题,可以与我联系。

the attached is firebird .net provider which is compatible with ibatis.net and NHibernate, need .net 3.5 supported.

近两年一直想着做一个.net的嵌入式数据库。

呵呵(眼高于顶,想做的太多了,现在在关注报表)。
看看~~

相关推荐

    C#连接firebird嵌入版数据库实例

    在本文中,我们将深入探讨如何使用C#连接到Firebird嵌入式数据库。Firebird是一种开源的关系型数据库管理系统,提供跨平台支持,并且有多种语言的API,包括.NET框架下的.NET Provider。本实例将基于Visual Studio ...

    Firebird与C#的连接及嵌入式开发

    在C#中使用Firebird嵌入式开发需要下载Firebird嵌入式版本的文档,并将所有.dll文档copy到程序的debug目录下,同时将数据库也copy到debug目录下。这样就可以进行调试了。 在使用Firebird嵌入式开发时,需要修改...

    C#如何访问firebird2.5.8嵌入式小型数据库

    总之,通过使用Firebird .NET Data Provider和C#的ADO.NET功能,开发者可以轻松地访问和操作Firebird 2.5.8嵌入式数据库。无论是简单的CRUD操作还是复杂的业务逻辑,C#都能提供强大而灵活的支持。记得在实际应用中,...

    嵌入式Firebird:具有2 MB运行时的全功能嵌入式数据库

    在实际项目中,`EmbeddedFirebird_demo.zip`可能包含了一个演示程序,展示了如何在C#环境中嵌入Firebird数据库,而`EmbeddedFirebird_src.zip`则可能包含了源代码,供开发者参考和学习。通过这些示例,开发者可以...

    嵌入式firebird+VS2015实例五(代码)

    在本文中,我们将深入探讨如何在C#中利用嵌入式Firebird数据库与Visual Studio 2015相结合,实现一个处理中文字符的实例。Firebird是一款开源的关系型数据库管理系统,以其高性能、稳定性以及跨平台特性而受到开发者...

    firebird embedded 嵌入式——Spring hibernate 集成连接配置

    在IT行业中,数据库管理系统是应用开发的核心组成部分,而Firebird Embedded是一种轻量级、高性能的嵌入式数据库系统,常用于需要本地数据存储且对系统资源占用要求较低的应用场景。在Java开发中,Spring和Hibernate...

    嵌入式firebird+VS2015实例一(代码)

    首先,为了在C#项目中使用Firebird,我们需要引入Firebird .NET Data Provider。这是一个专门用于与Firebird通信的.NET库,可以从NuGet包管理器安装。打开你的VS2015项目,右键点击“管理NuGet程序包”,在搜索框中...

    嵌入式firebird+VS2015实例八(代码)

    总之,本实例的重点在于理解如何在C#中使用Firebird .NET Data Provider进行数据库操作,特别是连接管理以及创建数据库表的方法。同时,我们还需要注意良好的编程习惯,如正确处理异常和资源释放,以确保程序的稳定...

    嵌入式firebird+VS2015实例七(代码)

    在本文中,我们将深入探讨如何在C#环境中利用嵌入式Firebird数据库与Visual Studio 2015进行实际开发。Firebird是一款开源的关系型数据库管理系统,它具有高性能、稳定性和跨平台特性,广泛用于各种应用程序。Visual...

    嵌入式firebird+VS2015实例三(代码)

    嵌入式Firebird数据库在开发过程中常常被用于创建高效、轻量级的本地数据存储解决方案。结合Visual Studio 2015(VS2015)进行开发,可以利用C#的强大功能,实现数据访问和管理。在这个实例中,我们探讨了如何在项目...

    C#连接嵌入式小型数据库firebird,操作数据-附件资源

    C#连接嵌入式小型数据库firebird,操作数据-附件资源

    嵌入式firebird+VS2015实例十五

    在本实例"嵌入式firebird+VS2015实例十五"中,我们将探讨如何在C#环境下,结合Firebird数据库系统,实现用户输入数据的动态处理与更新功能。Firebird是一种开源的关系型数据库管理系统,它具有高性能、稳定性和跨...

    嵌入式firebird+VS2015实例四(代码)

    在本文中,我们将深入探讨如何在嵌入式环境中使用Firebird数据库系统,并结合Visual Studio 2015(VS2015)进行C#编程,以处理中文字符集问题。"gb2312Test"这个文件名可能指的是一个包含示例代码或测试用例的项目...

    嵌入式firebird+VS2015实例十四

    在这个实例“嵌入式firebird+VS2015实例十四”中,重点讨论的是如何使用C#语言来操作`Firebird`数据库,特别是通过`FbConnection`和`FbCommand`类。`FbConnection`是.NET Framework中的Firebird ADO.NET提供程序的一...

    嵌入式firebird+VS2015实例十一(代码)

    1. 数据库触发器:在Firebird数据库中设置触发器,当数据表发生变化时,触发器会执行特定的操作,如发送通知到应用程序。 2. 长轮询(Long Polling):这是一种Web开发中的异步通信技术,客户端持续请求服务器,...

    嵌入式firebird+VS2015实例十(代码)

    在本文中,我们将深入...这对于使用嵌入式数据库系统,如Firebird,尤其重要,因为这些系统通常在资源有限的环境中运行,错误处理不当可能会导致严重后果。在C#中,合理地使用异常处理能确保程序的稳定性和用户体验。

    嵌入式firebird+VS2015实例六(代码)

    在IT领域,尤其是在软件开发中,嵌入式数据库系统如Firebird经常被用来处理轻量级数据存储需求,尤其在嵌入式设备或移动应用中。本实例将聚焦于使用Firebird数据库与C#编程语言的结合,通过Visual Studio 2015进行...

    嵌入式firebird+VS2015实例十七(代码)

    通过深入理解并实践这个实例,你可以掌握如何在C#中有效利用Firebird的存储过程功能,提升你的嵌入式数据库应用的性能和安全性。同时,这也是理解和学习数据库设计、SQL编程和.NET框架的好机会,对于提升你的IT专业...

    嵌入式firebird+VS2015实例十二(代码)

    在C#(VS2015的主要编程语言)中,可以使用事件驱动编程模型,结合数据绑定技术,使UI控件如DataGridView自动同步数据库中的数据。例如,可以创建一个后台线程定期查询数据库,或者使用异步操作来避免阻塞UI。 在...

Global site tag (gtag.js) - Google Analytics