目前最新的Firebird版本是:3.0.3
使用过程的一些必经问题,嵌入式的模式就不再说了。
在使用标准Server版时,第一个要考虑的就是数据库文件的存放位置,默认配置放在windows/system32下,很可能需要改为指定的位置:例如安装目录的db子目录下。
1 DatabaseAccess = Restrict db
第二个需要注意的就是,表的命名最好使用全大写,这样在写sql时,不用关心大小写问题,即便写的是小写,也没问题;这一点和Postgresql正好相反。
第三个就是连接字符串,和标准的稍微有点区别,正确的是: uid=SYSDBA;Password=1234;database=wms;server=192.168.0.119;Dialect=3;ServerType=0; 注意这里的Password不能被pwd替换,其他几个可以。ServerType=0是服务器版,1是嵌入式版。
第四个还是要修改服务器配置文件,使客户端和服务器保持一致的加密等级,在文件 firebird.conf ,修改为 WireCrypt = Enabled ,否则会报错 Incompatible wire encryption levels requested on client and server 。
然后,如果用到轻量级的ORM,如Influendata,可以从nuget上下载 FirebirdSql.Data.FirebirdClient ,会在配置文件自动添加 DbProviderFactories 节点。
1 <system.data> 2 <DbProviderFactories> 3 <remove invariant="MySql.Data.MySqlClient" /> 4 <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 5 6 <remove invariant="FirebirdSql.Data.FirebirdClient" /> 7 <add name="FirebirdClient Data Provider" invariant="FirebirdSql.Data.FirebirdClient" description=".NET Framework Data Provider for Firebird" type="FirebirdSql.Data.FirebirdClient.FirebirdClientFactory, FirebirdSql.Data.FirebirdClient" /> 8 </DbProviderFactories> 9 </system.data>
在定义DbContext上下文时,并没有提供firebird的驱动,可以使用 DB2Provider 替代: return new DbContext().ConnectionString(connstr, new DB2Provider(), FirebirdSql.Data.FirebirdClient.FirebirdClientFactory.Instance);
使用 FbConnectionStringBuilder 生成的标准连接字符串: user id=SYSDBA;character set=UTF8;dialect=3;server type=Default;initial catalog=a;password=1234;data source=localhost
1 FbConnectionStringBuilder connBuilder = new FbConnectionStringBuilder(); 2 connBuilder.DataSource = "localhost"; 3 connBuilder.UserID = "SYSDBA"; 4 connBuilder.Password = "1234"; 5 connBuilder.Database = "a"; 6 connBuilder.ServerType = FbServerType.Default; 7 connBuilder.Charset = "UTF8"; 8 connBuilder.Dialect = 3; 9 connectionString = connBuilder.ConnectionString;
默认配置:
1 connBuilder.DataSource = "localhost"; 2 connBuilder.UserID = "sysdba"; 3 connBuilder.Password = "1234"; 4 connBuilder.Database = "a"; 5 connBuilder.Charset = "utf8";