技术笔记:MouStudio技术储备之

简介: 技术笔记:MouStudio技术储备之

1 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 数据库


参考:


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 中文路径问题解决


参考:


源代码:


static string GetConnectionString()


{


FbConnectionStringBuilder cs = new FbConnectionStringBuilder();


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


cs.UserID = "SYSDBA";


cs.Password = "masterkey";


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


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


return //代码效果参考:http://www.jhylw.com.cn/090641362.html

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 //代码效果参考:http://www.jhylw.com.cn/155321923.html

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!");


}


相关下载:


Firebird Emded V2.0 发布文件


本博文PDF


本博文程序源码


数据库开发参考(Delphi)


本文引用地址:

相关文章
|
1月前
|
存储 运维 安全
隐语第二期学习内容随笔
数据要素在采集、存储等环节内外循环,数据持有方需确保内外循环中的数据安全与管控。信任焦虑源于数据权属等问题,依赖技术信任解决。隐私计算原则与开源隐语技术保障隐私安全。数据资产化驱动价值释放,技术信任促进流通,强调数据安全、隐私和信任的核心地位。
23 0
|
2天前
|
Linux 开发工具 C++
技术笔记:RustGUI编程
技术笔记:RustGUI编程
|
11天前
|
安全 网络安全
Day1:360培训学习重点笔记(7.13)
Day1:360培训学习重点笔记(7.13)
10 1
|
2天前
|
前端开发 JavaScript
技术笔记:waitFor和waitForAny的实现
技术笔记:waitFor和waitForAny的实现
|
2天前
|
自然语言处理 编译器 API
技术笔记:Roslyn介绍
技术笔记:Roslyn介绍
|
2天前
|
存储 安全 数据安全/隐私保护
技术笔记:mft(转载)
技术笔记:mft(转载)
|
1天前
|
监控 安全 Unix
技术笔记:libev学习(一)
技术笔记:libev学习(一)
|
3天前
|
前端开发 关系型数据库 MySQL
技术好文:R基础学习(三)
技术好文:R基础学习(三)
|
1天前
|
数据可视化 BI OLAP
技术经验分享:DundasBI简介
技术经验分享:DundasBI简介
|
1月前
|
存储 监控 安全
隐语第一期学习内容随笔
构建基于技术信任的数据可信流通体系,确保数据传输、处理、存储安全可控,防范持有权风险和越权使用导致的数据泄露、篡改。密态数据和密态天空计算强化数据安全,实现跨云互联。内外循环管理数据安全域,全程保障涉及身份确认、利益对齐等环节,依赖先进加密和跨域管控技术。
24 0