在C#中使用FireBird嵌入式数据库
2016-02-25 14:46
381 查看
在C#中使用FireBird嵌入式数据库
2014-11-15 14:42
911人阅读 评论(0)
收藏
举报
嵌入式C++C#C数据结构
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)增强:支持“显式游标”、存储过程支持默认参数、支持“LE***E标号”语法、将用户自定义函数(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如下:
Java代码
"User=SYSDBA;Password=masterkey;Database=ray_linn.fdb;Charset=NONE;ServerType=1"
ServerType可取值“0”或者“1”,“0”表明连接对象为普通服务器,“1”才是嵌入式服务器。但对于编程者来说,这一切都是透明的。
我们可以通过FbDataAdapter或者FbConnection来从FireBird数据库获取数据(而不论是普通服务器还是嵌入式)。
1.FBConnection
Java代码
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
Java代码
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数据库。
Java代码
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脚本的路径,比如这个
Java代码
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.
2014-11-15 14:42
911人阅读 评论(0)
收藏
举报
转自:http://raylinn.iteye.com/blog/383804
嵌入式C++C#C数据结构 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)增强:支持“显式游标”、存储过程支持默认参数、支持“LE***E标号”语法、将用户自定义函数(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如下:
Java代码
"User=SYSDBA;Password=masterkey;Database=ray_linn.fdb;Charset=NONE;ServerType=1"
ServerType可取值“0”或者“1”,“0”表明连接对象为普通服务器,“1”才是嵌入式服务器。但对于编程者来说,这一切都是透明的。
我们可以通过FbDataAdapter或者FbConnection来从FireBird数据库获取数据(而不论是普通服务器还是嵌入式)。
1.FBConnection
Java代码
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
Java代码
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数据库。
Java代码
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脚本的路径,比如这个
Java代码
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.
相关文章推荐
- oracle启动报错:ORA-03113:通信通道的文件结尾
- 途牛原创|SQLite 加密解决方案
- SQL 输出某一天所在的年月对应的所有星期的开始与结束日期(每个月仅算4周,第四周可能会有10天)
- 如何在同一台服务器上安装sql server2000和2005
- oracle高水线对性能的影响
- 关于MySQL中的游标问题
- oracle技术博客
- Oracle中存储过程迁移到Mysql的问题集锦
- mybatis之sql总结
- MySQL知识分类
- redis3安装
- Spark SQL系列------1. Spark SQL 物理计划的Shuffle实现
- plsql ORA-12541:TNS:无监听程序
- MySQL创建用户与授权方法
- Oracle trunc()函数的用法
- lnmp+redis+solr+rabbitmq+memcache+nginx_mogilefs_module+jdk1.8.0_73环境配置
- 单文件小型数据库的选择
- oracle 将查询结果纵向横向显示。
- mysql配置优化
- perl 连接 mysql 数据库