3

我似乎在从示例 C# 应用程序连接到嵌入式 FireBird 数据库时遇到问题。这就是我所拥有的。

static void Main(string[] args)
    {

        //Some constant parameters used to form up the connection string... 
        #region constant literals
        const String User = "SYSDBA";
        const String Password = "masterkey";
        const String DBPath = "D:\\!tmp\\1\\cafw.fdb";
        const String DLLPath = @"fbembed.dll";
        const String Charset = "WIN1251";
        const int Dialect = 3;
        #endregion

        //I check whether we actually have a database file nearby
        //and fbembed.dll. If we don't - we leave
        if (File.Exists(DBPath) == true && File.Exists(DLLPath) == true)
        {
            //I form up a connection string out of literals I've declared above
            FbConnectionStringBuilder CStr = new FbConnectionStringBuilder();

            CStr.ServerType = FbServerType.Embedded;                
            CStr.UserID = User;
            CStr.Password = Password;                
            CStr.Dialect = Dialect;                
            CStr.Database = DBPath;
            CStr.Charset = Charset;                                
            CStr.ClientLibrary = DLLPath;

            //And then I finally try to connect
            FbConnection Conn = new FbConnection(CStr.ToString());                

            try
            {
                //See what we've got in the end
                Console.WriteLine(CStr.ToString());
                //And try to connect
                Conn.Open();
            }
            catch (Exception Ex)
            {
                //Show me what has gone wrong
                Console.WriteLine("\n" + Ex.Message.ToString());
                Console.ReadKey();
            }
            finally
            {
                Conn.Close();
            }
        }
    }

问题是,它给我一个

服务器类型=Embedded;用户ID=SYSDBA;密码=masterkey;方言=3;初始目录=D:!tmp\1 \cafw.fdb;字符集=WIN1251;客户端库=fbembed.dll

未找到错误代码 335544972 的消息。

无效的 ESCAPE 序列

作为输出。

我四处搜索以找出有关 335544972 错误代码的信息,这似乎与无效的连接字符串有关,但我还没有找到任何有关此的“官方”信息。

有没有人遇到过类似的事情,所以有人可以告诉我我做错了什么?

谢谢。

UPD:正如有人建议的那样,我试图简化我的连接字符串。所以,而不是上面所做的,我使用了

FbConnection Conn = new FbConnection("Database=D:\\tmp\\1\\cafw.fdb;ServerType=1");

它给了我一条消息“嵌入式 Firebird 不支持受信任的身份验证”。所以,我尝试使用常规的 sysdba 登录

FbConnection Conn = new FbConnection("Database=D:\\tmp\\1\\cafw.fdb;ServerType=1;User=SYSDBA;Password=masterkey");

并得到了同样的错误信息。

4

2 回答 2

5

奇怪的东西。

很难相信,但我能说出这个名字的唯一原因是我的 c# 解决方案位于 d:......\c#\myAppProject 的某个地方(是的,这都是关于 # 符号的)。

在我更换项目后,一切正常。

于 2010-04-19T17:16:08.923 回答
2

我知道这不是你的答案,但它是给我的,所以..

您必须确保提供用户和密码,即使它们不是必需的(任何密码都可以)。

于 2012-02-08T06:21:54.793 回答