Подключение к встроенной базе данных FireBird из проблемы приложения C # - PullRequest
3 голосов
/ 18 апреля 2010

Кажется, у меня проблема с подключением к встроенной базе данных FireBird из примера приложения C #. Вот что у меня есть.

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();
            }
        }
    }

Проблема в том, что это дает мне

тип сервера = встроенный; идентификатор пользователя = SYSDBA; пароль = мастер-ключ; диалект = 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");

, и он дал мне сообщение, что «Trusted Auth не поддерживается на Embedded Firebird». Итак, я попытался использовать обычный логин sysdba

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

и получил то же самое сообщение об ошибке.

Ответы [ 2 ]

5 голосов
/ 19 апреля 2010

Странные вещи.

В это трудно поверить, но единственная причина, по которой я могу назвать это, заключается в том, что мое решение c # находилось где-то в d: ...... \ c # \ myAppProject (да, все дело в знаке #). *

После того, как я заменил проект, все заработало правильно.

2 голосов
/ 08 февраля 2012

Я знаю, что это не твой ответ, но он был для меня, так что ...

Вы должны убедиться, что вы указали имя пользователя и пароль, даже если они не требуются (подойдет любой пароль).

...