Я делаю приложение Windows Form, которое читает базу данных Firebird и отображает данные.
Я использую DLL-файл, рекомендованный коллегой: FirebirdSql.Data.FirebirdClient.dll
Вот пример того, как я читаю данные:
class FBConnect
{
private FbConnection MyConnection= new FbConnection();
private FbConnectionStringBuilder ConnectionString;
//Constructor
public FBConnect()
{
ConnectionString= new FbConnectionStringBuilder();
{
var withBlock = ConnectionString;
withBlock.Database = "MyFile.fdb";
withBlock.ServerType = FbServerType.Embedded;
withBlock.UserID = "USID";
withBlock.Password = "Key";
withBlock.Pooling = true;
}
MyConnection.ConnectionString = ConnectionString.ToString();
}
public DataTable RunQuery(string query)
{
try
{
MyConnection.Open();
if (MyConnection.State == ConnectionState.Open)
{
DataTable dt = new DataTable();
FbDataAdapter da = new FbDataAdapter(query, MyConnection.ConnectionString);
da.Fill(dt);
return dt;
}
else
{
return null;
}
}
catch (FbException err)
{
MessageBox.Show(err.Message, "Firebird error " + err.ErrorCode, MessageBoxButtons.OK, MessageBoxIcon.Error);
return null;
}
finally
{
MyConnection.Close();
}
}
}
И тут из другого класса я звоню:
FBConnect conn = new FBConnect();
dataGridView1.DataSource = conn.RunQuery("SELECT * FROM table1");
и это работает просто отлично, я вижу данные. Проблема возникает исключительно тогда, когда я использую JOIN
в своем запросе: тогда я получаю исключение
Ошибка Firebird 335544854
НАБОР СИМВОЛОВ ISO8859_1 не установлен
Что может быть причиной этого и как мне решить эту проблему?
Вот запрос, который я использую
SELECT FACTF.CVE_DOC AS "Clave de Documento", VENDEDOR.NOMBRE AS "Nombre del vendedor" FROM FACTF01 FACTF LEFT JOIN VEND01 VENDEDOR ON VENDEDOR.CVE_VEND=FACTF.CVE_VEND