You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用FbConnection.CreateDatabase()创建Firebird数据库时出现“用户名和密码未定义”错误的求助

调用FbConnection.CreateDatabase()创建Firebird数据库时出现“用户名和密码未定义”错误的求助

嗨,我刚接手了一个原开发者已经联系不上的项目,用Visual Studio 2022调试时,调用FbConnection.CreateDatabase()抛出了运行时异常,完整错误信息如下:

Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

错误提示说用户名和密码未定义,但我翻遍了项目也没搞清楚该在哪儿配置这些信息。我刚接触Firebird和这个项目,折腾了好一会儿都没进展,感觉肯定漏了什么显而易见的点。

下面是相关的代码细节:databaseDirectory被定义为Environment.SpecialFolder.MyDocuments,在Windows 11上实际路径是C:\Users\<我的用户名>\OneDrive\Documents\,databaseFile则是database.fdb4。代码大致结构是这样的:

if (!Directory.Exists(databaseDirectory))
{
    Directory.CreateDirectory(databaseDirectory);
}

string databasePath = Path.Combine(databaseDirectory, databaseFile);

FbConnection.CreateDatabase(databasePath); // 就是这行抛出了异常

问题原因&解决方法

其实Firebird哪怕是创建本地数据库,也要求你提供认证信息——哪怕是用默认的管理员账号也行,你现在的问题就是调用CreateDatabase时没传递这些必要的参数。给你几个可行的解决方向:

  • 方法一:直接构造完整连接字符串
    别只传数据库路径,换成包含用户名、密码和数据库路径的完整连接字符串,比如用Firebird默认的管理员账号(生产环境建议改成自定义账号):
string connectionString = $"User=sysdba;Password=masterkey;Database={databasePath};ServerType=Embedded";
FbConnection.CreateDatabase(connectionString);

这里ServerType=Embedded很重要,看你的路径应该是用的嵌入式Firebird;如果是用独立的Firebird服务端,要把ServerType改成Default,还要加上主机地址(比如DataSource=localhost)。

  • 方法二:用FbConnectionStringBuilder规范构造
    如果怕手动拼连接字符串出错,可以用官方提供的构造器类,更稳妥:
var csb = new FbConnectionStringBuilder
{
    UserID = "sysdba",
    Password = "masterkey",
    Database = databasePath,
    ServerType = FbServerType.Embedded
};
FbConnection.CreateDatabase(csb.ToString());

另外还要注意:确保项目引用的Firebird ADO.NET驱动版本,和你用的Firebird嵌入式库(或服务端)版本匹配,版本不兼容也可能导致这类奇怪的认证问题。

备注:内容来源于stack exchange,提问作者Eric Garrison

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 09:28:14