如何以编程方式创建 Firebird 数据库文件?
How do I create a Firebird database file programmatically?
如何以编程方式创建 Firebird 数据库文件?
我使用 SQLite 编写代码(C# .NET,System.Data.SQLite)
...决定试试 Firebird。
要安装 Firebird:Windows 7 -> Visual Studio 2013 -> 文件 -> 新建 -> 项目等 ---------- 然后是工具 -> 库包管理器 -> 管理 NuGet 包 -> 搜索 "firebird" -> Firebird ADO.NET 数据提供者 ->
安装(按钮)。
导致 a) 参考 -> FirebirdSql.Data.FirebirdClient 和 b)
FirebirdSql.Data.FirebirdClient.5.8.0 子目录 ... 带有 Firebird .dll。
为了创建一个 Firebird 数据库文件,我已经尝试过(从另一个 Whosebug post 中提取):
int pageSize = 4096;
bool forcedWrites = true;
bool overwrite = false;
var connectionString = new FbConnectionStringBuilder
{
Database = stPathFilename,
ServerType = FbServerType.Embedded,
UserID = "SYSDBA",
Password = "masterkey",
ClientLibrary = "fbclient.dll"
}.ToString();
FbConnection.CreateDatabase(connectionString, pageSize, forcedWrites, overwrite);
我认为这是标准的,除了 stPathFilename。但是,此代码通过异常...抱怨 fbclient.dll。
然后我试了
ClientLibrary = "FirebirdSql.Data.FirebirdClient.dll"
...位于我的调试子目录中。
这会引发异常..."Unable to find an entry point named 'isc_create_database' in DLL 'FirebirdSql.Data.FirebirdClient.dll"。
如何以编程方式创建 Firebird 数据库文件?
您错过了一个关键点,Firebird ADO.net 提供程序不像 System.Data.SQLite
:它 不是 Firebird 数据库引擎,它只是连接到 Firebird 服务器的客户端,默认情况下通过 Firebird TCP/IP 有线协议的纯 C# 实现,或者使用本机客户端或嵌入式 'server'(本机客户端 API直接与进程内数据库引擎对话)。
第一个选项没有依赖项,但第二个和第三个选项具有您需要自己提供的本机依赖项(它不是 FirebirdSql.Data.FirebirdClient 的一部分)。
对于本机,您需要 fbclient.dll
,对于 Firebird Embedded,您需要 Firebird Embedded:对于 Firebird 2.5 及更早版本:fbembed.dll
和依赖项,对于 Firebird 3 fbclient.dll
+ plugins\engine12.dll
和依赖项。
您的代码本身没有什么问题,但要获得它 运行 您需要执行以下操作才能获得 Firebird Embedded:
下载最新的 Firebird 3 压缩包(32 位用于 32 位或 AnyCPU 应用程序,64 位用于 64 位应用程序)。
撰写本文时最新版本是 Firebird 3.0.1。可以从Firebird 3 download page中获取,在Win32或Win64下寻找"Zip kit for manual/custom installs"
- 将其解压到一个文件夹中(例如
D:\Temp\fb3embedded
)
- 您可以保留所有文件,但您可以删除大部分文件,因为它们对于 Firebird Embedded 来说不是必需的(zipkit 也是一个完整的 Firebird 服务器)。您应该保留以下内容:
intl
文件夹和所有内容(字符集和排序规则支持所必需的)
plugins\engine12.dll
(数据库引擎本身,plugins
中的其他文件可能会被删除,但这可能会限制某些功能)
fbclient.dll
(嵌入式引擎的主要入口点)
firebird.msg
(包含错误信息)
icu*
(字符集和排序规则支持所必需的)
- 您可能需要保留
msvcp100.dll
和 msvcr100.dll
如果尚未安装(但通常在最新的 Windows 系统上)
从技术上讲,您也可以删除 intl
,但这会限制字符集支持。
在您的代码中,将 ClientLibrary = "fbclient.dll"
指定为 ClientLibrary = @"D:\Temp\fb3embedded\fbclient.dll"
即可。对于已部署的应用程序,您还可以将 Firebird Embedded 放入您的应用程序文件夹中并使用相对路径。
对于 Firebird 2.5 及更早版本,说明类似,但您需要下载该版本的嵌入式 zip 套件,将其解压缩到一个文件夹中,然后将 ClientLibrary
指向 fbembed.dll
(以及不在该文件夹中 fbclient.dll
)。
请注意,如果数据库已经存在并且您已将 overwrite
指定为 false
。
,则 FbConnection.CreateDatabase
将抛出异常
如何以编程方式创建 Firebird 数据库文件?
我使用 SQLite 编写代码(C# .NET,System.Data.SQLite) ...决定试试 Firebird。
要安装 Firebird:Windows 7 -> Visual Studio 2013 -> 文件 -> 新建 -> 项目等 ---------- 然后是工具 -> 库包管理器 -> 管理 NuGet 包 -> 搜索 "firebird" -> Firebird ADO.NET 数据提供者 -> 安装(按钮)。
导致 a) 参考 -> FirebirdSql.Data.FirebirdClient 和 b) FirebirdSql.Data.FirebirdClient.5.8.0 子目录 ... 带有 Firebird .dll。
为了创建一个 Firebird 数据库文件,我已经尝试过(从另一个 Whosebug post 中提取):
int pageSize = 4096;
bool forcedWrites = true;
bool overwrite = false;
var connectionString = new FbConnectionStringBuilder
{
Database = stPathFilename,
ServerType = FbServerType.Embedded,
UserID = "SYSDBA",
Password = "masterkey",
ClientLibrary = "fbclient.dll"
}.ToString();
FbConnection.CreateDatabase(connectionString, pageSize, forcedWrites, overwrite);
我认为这是标准的,除了 stPathFilename。但是,此代码通过异常...抱怨 fbclient.dll。
然后我试了
ClientLibrary = "FirebirdSql.Data.FirebirdClient.dll"
...位于我的调试子目录中。
这会引发异常..."Unable to find an entry point named 'isc_create_database' in DLL 'FirebirdSql.Data.FirebirdClient.dll"。
如何以编程方式创建 Firebird 数据库文件?
您错过了一个关键点,Firebird ADO.net 提供程序不像 System.Data.SQLite
:它 不是 Firebird 数据库引擎,它只是连接到 Firebird 服务器的客户端,默认情况下通过 Firebird TCP/IP 有线协议的纯 C# 实现,或者使用本机客户端或嵌入式 'server'(本机客户端 API直接与进程内数据库引擎对话)。
第一个选项没有依赖项,但第二个和第三个选项具有您需要自己提供的本机依赖项(它不是 FirebirdSql.Data.FirebirdClient 的一部分)。
对于本机,您需要 fbclient.dll
,对于 Firebird Embedded,您需要 Firebird Embedded:对于 Firebird 2.5 及更早版本:fbembed.dll
和依赖项,对于 Firebird 3 fbclient.dll
+ plugins\engine12.dll
和依赖项。
您的代码本身没有什么问题,但要获得它 运行 您需要执行以下操作才能获得 Firebird Embedded:
下载最新的 Firebird 3 压缩包(32 位用于 32 位或 AnyCPU 应用程序,64 位用于 64 位应用程序)。
撰写本文时最新版本是 Firebird 3.0.1。可以从Firebird 3 download page中获取,在Win32或Win64下寻找"Zip kit for manual/custom installs"
- 将其解压到一个文件夹中(例如
D:\Temp\fb3embedded
) - 您可以保留所有文件,但您可以删除大部分文件,因为它们对于 Firebird Embedded 来说不是必需的(zipkit 也是一个完整的 Firebird 服务器)。您应该保留以下内容:
intl
文件夹和所有内容(字符集和排序规则支持所必需的)plugins\engine12.dll
(数据库引擎本身,plugins
中的其他文件可能会被删除,但这可能会限制某些功能)fbclient.dll
(嵌入式引擎的主要入口点)firebird.msg
(包含错误信息)icu*
(字符集和排序规则支持所必需的)- 您可能需要保留
msvcp100.dll
和msvcr100.dll
如果尚未安装(但通常在最新的 Windows 系统上)
从技术上讲,您也可以删除 intl
,但这会限制字符集支持。
在您的代码中,将 ClientLibrary = "fbclient.dll"
指定为 ClientLibrary = @"D:\Temp\fb3embedded\fbclient.dll"
即可。对于已部署的应用程序,您还可以将 Firebird Embedded 放入您的应用程序文件夹中并使用相对路径。
对于 Firebird 2.5 及更早版本,说明类似,但您需要下载该版本的嵌入式 zip 套件,将其解压缩到一个文件夹中,然后将 ClientLibrary
指向 fbembed.dll
(以及不在该文件夹中 fbclient.dll
)。
请注意,如果数据库已经存在并且您已将 overwrite
指定为 false
。
FbConnection.CreateDatabase
将抛出异常