`
lightxun
  • 浏览: 10082 次
  • 性别: Icon_minigender_1
  • 来自: 丹东
社区版块
存档分类
最新评论

[转]技术储备之---C#使用Firebird嵌入版数据库

阅读更多


Firebird单击嵌入式非安装版使用

Firebird特性介绍firebird是一个全功能的,强大高效的,轻量级,免维护的数据库。它很容易让您从单用户,单数据库升级到企业级的应用。

一个firebird数据库服务器能够管理多个独立的数据库,每一个数据库同时可支持多个客户端连结。总之:它是一个开源的,强大在,可以自由使用的数据库(即使是商业上的使用)

作为一款单文件型小型数据库,Firebird 具有很多吸引人的特征,比如支持事务、支持存储过程、触发器等,而且 Embeded 版本的 Firebird 在 .NET 开发中只需要拷贝两个文件:一个 fbembed.dll (非托管但不需要注册的动态链接库)和一个 ADO.NET Data Provider 的 FirebirdSql.Data.Firebird.dll。这些特征都非常适合那些需要在客户端存储一些数据,但又不想安装数据库(比如MSDE)软件的情形。

据称,在国外,需要使用客户端数据库的情况中,有30%左右的开发者选择Access,有30%的开发者选择MSDE 2000,有30%的开发者选择Embedded Firebird,剩余10%选择其他小型数据库,如SQLite,MySQL 等。

上面所说的Access,MSDE 2000,Embedded Firebird,SQLite等都是可以免费再分发(free redistributable)的数据库。相比而言,MSDE 2000 显著缺点是需要安装,最大优点是和服务器端的 SQL Server 编程模型一致,开发便利。Access的显著缺点是功能较少,不支持事务等常用功能,最大优点是简单、多数开发者都很熟悉,部署也很方便。SQLite支持事务,也是一款单文件数据库,比较不足的是 .NET Data Provider 还不是很成熟。Firebird则同时具有:单文件、部署简单不需安装(只需 XCOPY 几个文件)、支持事务、存储过程、触发器,.NET Data Provider比较稳定成熟等优点。

Firebird 本身有SuperServer和Embedded版本之分,后者只能本机访问,不接受TCP连接。对于开发者而言,从Embedded数据库切换到SuperServer,只需更改数据库连接串中的ServerType值就行。

1.1 Firebird Data Provider For .NET 连接 Firebird 数据库

参考:http://blog.csdn.net/HiSpring/archive/2010/02/17/5310243.aspx

1、下载 Firebird 嵌入式数据库:Firebird-2.5.0.25920-0_Win32_embed_pdb_RC2(ZIP格式,8.5MB) 下载解压到本地磁盘即可,无需安装。

2、利用可视化的数据库管理工具创建数据库:Firebird 的数据库管理工具有很多,本人使用了 IBManager,只有一个 EXE 文件,免安装。

3、配置数据库文件所在目录:从第1步中解压出来的目录下复制文件 firebird.msg 和 intl、udf 两个子目录的所有内容到放置数据库文件的目录下。注:数据库文件可以放置在任何可访问的目录上,不必和应用程序同一目录。

4、配置应用程序目录:从第1步中解压出来的目录下复制文件以下 6 个文件到应用程序目录:fbembed.dll、firebird.conf、ib_util.dll、icudt30.dll、icuin30.dll、icuuc30.dll。

5、引用 Firebird .NET Provider 的 dll :先下载  Firebird.Net Provider v2.5.1 (ZIP格式,200KB),解压,将其中的 FirebirdSql.Data.FirebirdClient.dll 添加引用到项目。

6、连接:个人也记不住连接字符串,直接使用 FbConnectionStringBuilder 创建连接字符串,具体代码如下:

using FirebirdSql.Data.FirebirdClient;   

  

FbConnectionStringBuilder connBuilder = new FbConnectionStringBuilder();   

connBuilder.UserID = userId;//设置一个值,嵌入式版本并不验证用户名。   

connBuilder.ServerType = FbServerType.Embedded;//设置数据库类型为 嵌入式;   

connBuilder.Database = dbFile;//数据库文件的目录;   

  

using (FbConnection fbConn = new FbConnection(connBuilder.ConnectionString))   

{   

    fbConn.Open();   

    Console.WriteLine("连接成功!");     

    fbConn.Close();    

}  



本次实验使用2.0版本

拷贝需要的文件至Debug目录



1.2创建Firebird数据库文件

private void btn_NewDataBase_Click(object sender, EventArgs e)

        {

            FbConnection.CreateDatabase(GetConnectionString());

        }

        static string GetConnectionString()

        {

            FbConnectionStringBuilder cs = new FbConnectionStringBuilder();

            cs.Database = "某某工作室.fdb";

            cs.UserID = "SYSDBA";

            cs.Password = "masterkey";

            //cs.Charset = "UTF8"; //不设置任何的字符集,就可以避免出现中文路径不识别问题了           

            cs.ServerType = FbServerType.Embedded; // 设置数据库类型为嵌入式

            return cs.ToString();

        }



默认的数据库用户名为SYSDBA,默认密码为masterkey ,但是也可以创建自己的用户名和密码,如下代码所示:

static string GetConnectionString2()

        {

            FbConnectionStringBuilder cs = new FbConnectionStringBuilder();

            cs.Database = "某某工作室2.fdb";

            cs.UserID = "MOUSTUDIO";

            cs.Password = "851021mou";

            //cs.Charset = "UTF8"; //不设置任何的字符集,就可以避免出现中文路径不识别问题了           

            cs.ServerType = FbServerType.Embedded; // 设置数据库类型为嵌入式

            return cs.ToString();

        }




1.3创建数据表

using (FbConnection conn = new FbConnection(GetConnectionString()))

{

     conn.Open();

     using (FbCommand createTable = conn.CreateCommand())

     {

createTable.CommandText = "create table Table_MouCH (id int, name varchar(20) character set gb2312)";

             createTable.ExecuteNonQuery();

      }

}



1.4插入数据

using (FbCommand insertData = conn.CreateCommand())

                {

                    insertData.CommandText = "insert into Table_MouCH values (@id, @name)";

                    insertData.Parameters.Clear();

                    insertData.Parameters.Add("@id", FbDbType.Integer).Value = 10;

                    insertData.Parameters.Add("@name", FbDbType.VarChar, 200).Value = "某某";

                    insertData.ExecuteNonQuery();

                }



1.5读取数据

using(FbCommand selectData = conn.CreateCommand())

                {

                    selectData.CommandText = "select * from Table_MouCH";

                    using(FbDataReader r = selectData.ExecuteReader())

                    {

                        while(r.Read())

                        {

                            //string str_Temp = r.GetString(0);

                            string str_Temp = r.GetString(1);

                            MessageBox.Show(str_Temp);

                        }

                    }

                }



使用注意解决问题:

(1)       FDB中如何处理大小写?好像所有的字母都被搞成了大写?

(2)       FDB中的所有字段似乎都只能用英文!而且还是小写的!

是否跟字符集设定有关???



2010-6-13 中文路径问题解决

参考:http://www.jocw.cn/sxsoftservice/Article_Print.asp?ArticleID=780



源代码:

static string GetConnectionString()

        {

            FbConnectionStringBuilder cs = new FbConnectionStringBuilder();

            cs.Database = "某某工作室.fdb";

            cs.UserID = "SYSDBA";

            cs.Password = "masterkey";

            //cs.Charset = "UTF8"; //不设置任何的字符集,就可以避免出现中文路径不识别问题了           

            cs.ServerType = FbServerType.Embedded; // 设置数据库类型为嵌入式

            return cs.ToString();

        }



2010-6-13 数据表中文字段处理成功

只需要在创建数据表的时候指定数据表的字符集编码为gb2312即可。

下面是测试代码:
private void btn_ChTest_Click(object sender, EventArgs e)

        {

            using (FbConnection conn = new FbConnection(GetConnectionString()))

            {

                conn.Open();

                using (FbCommand createTable = conn.CreateCommand())

                {

createTable.CommandText = "create table Table_MouCH (id int, name varchar(200) character set gb2312)";

                    createTable.ExecuteNonQuery();

                }

                using (FbCommand insertData = conn.CreateCommand())

                {

                    insertData.CommandText = "insert into Table_MouCH values (@id, @name)";

                    insertData.Parameters.Clear();

                    insertData.Parameters.Add("@id", FbDbType.Integer).Value = 10;

                    insertData.Parameters.Add("@name", FbDbType.VarChar, 200).Value = "某某";

                    insertData.ExecuteNonQuery();

                }

                using(FbCommand selectData = conn.CreateCommand())

                {

                    selectData.CommandText = "select * from Table_MouCH";

                    using(FbDataReader r = selectData.ExecuteReader())

                    {

                        while(r.Read())

                        {

                            //string str_Temp = r.GetString(0);

                            string str_Temp = r.GetString(1);

                            MessageBox.Show(str_Temp);

                        }

                    }

                }

            }

            MessageBox.Show("OK3!");

        }



分享到:
评论

相关推荐

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

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

    C#实现对FireBird数据库数据操作

    首先,要连接到FireBird数据库,我们需要使用ADO.NET(.NET框架提供的数据访问技术)中的FirebirdSql.Data.FirebirdClient组件。在C#项目中,通过NuGet包管理器安装该组件,然后创建`FbConnection`对象来建立连接。...

    C# FireBird 工具类

    本文将深入探讨如何使用C#来封装一个针对FireBird数据库的工具类,以便进行各种数据库操作。 首先,要与FireBird数据库交互,我们需要引入一个能够支持FireBird的.NET数据提供者,如`FirebirdSql.Data....

    C#使用Embedded Firebird数据库示例

    在本文中,我们将深入探讨如何在C#编程环境中使用Embedded Firebird数据库,这是一种高效且可靠的内嵌式数据库解决方案。Firebird数据库以其开源、跨平台和高性能的特点被广泛应用于各种项目,尤其是在.NET框架下,...

    python连接firebird数据库方法

    本文将详细介绍如何使用Python来连接Firebird数据库,包括所需的库、配置步骤以及示例代码。 #### 二、环境搭建 要在Python环境中操作Firebird数据库,首先需要安装相应的驱动库。这里推荐使用`kinterbasdb`库,它...

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

    然后,需要使用Firebird-ADO.NET添加using FirebirdSql.Data.FirebirdClient;语句,以便使用Firebird数据库。在连接字符串中,需要指定数据库的连接参数,例如localhost、数据库名、用户名和密码等。 在连接...

    JayBird-Java连接FireBird数据库包

    JayBird-Java连接FireBird数据库包,Firebird JCA/JDBC Driver。 常见异常代码:No connection character set specified (property lc_ctype, encoding, charSet

    VS使用EF操作Firebird所需软件.zip

    在本文中,我们将深入探讨如何在Visual Studio (VS) 中使用Entity Framework (EF) 操作Firebird数据库。首先,我们要确保拥有所有必要的软件组件。标题提及的“VS使用EF操作Firebird所需软件.zip”文件应该包含了...

    java连接firebird数据库的驱动包-Jaybird

    Java连接Firebird数据库的过程中,驱动包扮演着至关重要的角色,它使得Java应用程序能够与Firebird数据库进行通信。本文将详细讲解如何使用Jaybird驱动包来实现这一目标。 Jaybird是Firebird官方推荐的Java JDBC...

    FireBird数据库使用指南

    FireBird数据库使用指南 一、FireBird数据库简介 二、FireBird数据库的安装 三、FireBird.conf配置文件常用参数 四、Firebird预定义函数的安装 五、Firebird的基本数据类型 六、FirebirdSQL内置函数使用说明 七、...

    delphi连接firebird数据库

    不过,随着技术的发展,现在的Delphi版本和数据库连接方式可能有更多的选择,如使用ADO(ActiveX Data Objects)或直接使用Firebird的客户端库(IBProvider)。每个方法都有其优势和适用场景,开发者可以根据项目...

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

    在本文中,我们将深入探讨如何使用C#编程语言来访问Firebird 2.5.8嵌入式小型数据库。Firebird是一种开源的关系型数据库管理系统,它具有高度的可靠性和性能,适用于各种规模的应用程序,包括嵌入式系统。C#是微软...

    Firebird数据库中文版

    Firebird是一个全功能的,强大高效的,轻量级,免维护的数据库。它很容易让您从单用户,单数据库升级到企业级的应用。 一个firebird数据库服务器能够管理多个独立的数据库,每一个数据库同时可支持多个客户端连结。 ...

    数据库安装FireBird及FBControl、FlameRobin等工具.rar

    数据库安装FireBird及FBControl、FlameRobin等工具.rar fbcontrol.rar FireBird212.rar flamerobin-0.9.2-1-setup.rar gbak.rar fbclient.dll Firebird_ODBC_2.0.2.153_Win32.exe Firebird_ODBC_2.0.2.153_x64.exe ...

    firebird ODBC 驱动绿色版 ado连接firebird fdb数据库

    readme-firebird-通过odbc-delphi 使用ado可以访问.txt odbc 文件名 odbcfb.dll 2010-04-18 是 Firebird_ODBC_2.0.0.148_win32.exe 安装的 -------------------------------------------------------- delphi ...

    FireBird2.5.2.26540_0_Win32数据库包(含管理工具FireBird Maestro.v12.10.0.1)

    firebird是一个全功能的,强大高效的,轻量级...Firebird-2.5.2.26540_0_Win32 安装程序 Firebird.Maestro.Pro.v12.10.0.1 数据库管理安装程序 FireBird数据库使用指南 FireBird应用开发宝典样章 Test Delphi 应用实例

    php连接firebird2.1数据库的代码-亲测可用

    下面是一个使用此函数连接到Firebird 2.1数据库的简单示例: ```php $database = 'localhost:/var/lib/firebird/2.1/data/mydatabase.fdb'; $username = 'sysdba'; $password = 'masterkey'; $conn = ibase_...

    FireBird数据库

    在本文中,我们将深入探讨FireBird数据库的各个方面,包括它的特性、安装过程、配置文件以及如何开始使用。 1. **FireBird数据库特性** - **开源与跨平台**:FireBird是开放源代码的,遵循Apache 2.0许可证,可在...

    Firebird数据库Firebird.dll供VB6使用:C++dll源码和VB6 Demo源码演示

    仅一个Win32 dll (非COM, 可直接使用), 让VB6拥有强大而不复杂的Firebird数据库,包含...firebird是一个十分小的开源数据库,可作为像Access一样使用的文件型数据库,单用户连接;也能够以服务方式启动,支持多用户访问

    java读取firebird数据库例子+jar包

    在本例中,我们关注的是如何使用Java通过Jaybird驱动读取Firebird数据库,以及涉及的三个jar包——jaybird-2.1.6.jar、jaybird-full-2.1.6.jar和jaybird-pool-2.1.6.jar。 1. **Jaybird驱动**:Jaybird是Java对...

Global site tag (gtag.js) - Google Analytics