2016-01-02 9 views
0

Когда я запускаю код C# с firebird db в качестве backend, он показывает. Мой код прост и прост, тогда почему он показывает такую ​​ошибку ??Строка подключения Firebird db

Необработанное исключение типа «System.BadImageFormatException» произошло в FirebirdSql.Data.FirebirdClient.dll

Дополнительная информация: Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)

private void button1_Click(object sender, EventArgs e) 
    { 
     string connectionString = 
            "User=SYSDBA;" + 
            "Password=masterkey;" + 
            "Database=TESTFB.fdb;" + 
            "DataSource=localhost;" + 
            "Port=3050;" + 
            "Dialect=3;" + 
            "Charset=NONE;" + 
            "Role=;" + 
            "Connection lifetime=15;" + 
            "Pooling=true;" + 
            "MinPoolSize=0;" + 
            "MaxPoolSize=50;" + 
            "Packet Size=8192;" + 
            "ServerType=1;"; 
     //string sql = "INSERT INTO STUDENT(ID,NAME) VALUES(@ID,@NAME)"; 
     string sql = "SELECT * FROM STUDENT WHERE [email protected] AND [email protected];"; 
     try 
     { 
      FbConnection con = new FbConnection(connectionString); 
      con.Open(); 
      FbCommand cmd = new FbCommand(sql, con); 
      cmd.Parameters.Add("@ID", FbDbType.Integer).Value = Convert.ToInt32(textBox1.Text); 
      cmd.Parameters.Add("@ID", FbDbType.VarChar).Value = textBox2.Text; 

      cmd.CommandType = CommandType.Text; 
      cmd.ExecuteNonQuery(); 
     } 
     catch (FbException ex) 
     { 
      MessageBox.Show("5--" + ex.Message); 
     } 
    } 
+1

Ошибка не имеет ничего общего с вашим кодом. Проблема связана с DLL, на которую вы ссылаетесь. Вы можете использовать неправильную версию или использовать 32-битную версию на 64-битной машине и т. Д. – Tim

+0

вы хотите сказать, что DLL-файл поставщика данных firebird ado.net может быть неправильным? –

+0

Да, за сообщение об ошибке. Исключение BadImageFormatException означает, что по какой-то причине он не может прочитать DLL. – Tim

ответ

0

Проблема заключается в том, что вы пытаетесь использовать встроенный (ServerType=1), но fbembed.dll (или fbclient.dll) на вашем пути не соответствует времени выполнения разрядность (например, 32 бит против 64 немного).

Вы уверены, что хотите использовать встроенный Firebird? Остальная часть строки конфигурации предполагает, что вы хотите подключиться к обычным серверам Firebird, и в этом случае ServerType=0 (или просто оставить его) лучше, так как тогда у вас нет зависимости от родной DLL.

Смежные вопросы