浏览 7120 次
锁定老帖子 主题:在C#中使用FireBird嵌入式数据库
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-05-11
最后修改:2009-05-11
Firebird 2.0项目已于2005年2月份开发完成,2005年5月发布。下面列举一些Firdbird 2.0新增加的功能:
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. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-05-12
ray_linn 写道 Firebird脱胎于Borland公司的开源版数据库Interbase6.0,是一个完全非商业化的产品, 用C和C++开发。由于与interbase的血缘关系,大部分interbase的开发工具可以直接应用 到Firebird开发中。
Firebird 2.0项目已于2005年2月份开发完成,2005年5月发布。下面列举一些Firdbird 2.0新增加的功能:
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的嵌入式数据库。 呵呵(眼高于顶,想做的太多了,现在在关注报表)。 看看~~ |
|
返回顶楼 | |
发表时间:2009-05-24
firebird貌似性能不错,打算用嵌入式来存放我的空间索引。
|
|
返回顶楼 | |
发表时间:2009-06-12
fb我用过,delphi、ruby、python、.net 都挺好用。就是作为嵌入数据库好像支持的设备很少啊。
|
|
返回顶楼 | |