Исключение Firebird: таблица неизвестна

Я мог бы установить соединение с базой данных Firebird с помощью следующей строки соединения:

ConnectionString = "User ID=SYSDBA;Password=masterkey;Database=localhost:C:\\MyDb\\mydb.FDB;DataSource=localhost;Charset=NONE;";

Но когда код C# пытается выполнить запрос, возникает следующая ошибка:

Ошибка динамического SQL Код ошибки SQL = -204 Таблица неизвестна

Код, который я пробовал:

using FirebirdSql.Data.FirebirdClient;
...
FbConnection connection = new FbConnection(ConnectionString);
connection.Open();
FbCommand readCommand = new FbCommand("Select Name From Customer;", connection);
FbDataReader myreader = readCommand.ExecuteReader();

Таблица Customer определенно существует (я проверил с помощью IBExpert - в ней я могу прочитать данные). В гугле почти ничего не нашел.

На моем компьютере работает сервер Firebird 2.5. В чем может быть проблема?


person Mitulát báti    schedule 22.05.2016    source источник
comment
Ошибка неполная; Неизвестная ошибка таблицы также будет отображать имя неизвестной таблицы. Не могли бы вы также показать DDL таблицы? Я подозреваю, что вы создали таблицу "Customer", которая чувствительна к регистру и поэтому отличается от Customer (которая нечувствительна к регистру и эквивалентна CUSTOMER).   -  person Mark Rotteveel    schedule 22.05.2016
comment
К сожалению, я не знаю DDL. Файл FDB был отправлен мне в качестве базы данных без какой-либо дополнительной информации. Единственное, что я мог использовать, это IBExpert (чтобы увидеть, какие таблицы в нем). Могу ли я как-то вычислить DDL из самой базы данных или с помощью каких-то инструментов?   -  person Mitulát báti    schedule 22.05.2016
comment
Конечно, IBExpert может реконструировать DDL (как и другие инструменты). Поскольку я не использую IBExpert, я точно не знаю, как это сделать.   -  person Mark Rotteveel    schedule 22.05.2016
comment
Да, я только что проверил, и, к сожалению, это Клиент.   -  person Mitulát báti    schedule 22.05.2016
comment
Чтобы просмотреть DDL из IBFExpert, откройте таблицу, хранимую процедуру или что-то еще и просто щелкните вкладку DDL.   -  person Val Marinov    schedule 22.05.2016


Ответы (1)


Как вы подтвердили в комментариях, что имя таблицы на самом деле "Customer", вам нужно будет заключать имена объектов в ваш запрос, чтобы сделать их чувствительными к регистру, поэтому:

new FbCommand("Select \"Name\" From \"Customer\"", connection);

Я предположил, что Name также чувствителен к регистру, и поэтому также процитировал его.

person Mark Rotteveel    schedule 22.05.2016
comment
Это решило проблему. Спасибо большое! - person Mitulát báti; 22.05.2016