C# Firebird数据库连接字符串
当我以firebird db作为后端运行c#代码时,它显示了。我的代码简单明了,那么为什么它会显示这样一个错误 FirebirdSql.Data.FirebirdClient.dll中发生类型为“System.BadImageFormatException”的未处理异常 其他信息:试图加载格式不正确的程序。(HRESULT的异常:0x8007000B)C# Firebird数据库连接字符串,c#,firebird2.5,C#,Firebird2.5,当我以firebird db作为后端运行c#代码时,它显示了。我的代码简单明了,那么为什么它会显示这样一个错误 FirebirdSql.Data.FirebirdClient.dll中发生类型为“System.BadImageFormatException”的未处理异常 其他信息:试图加载格式不正确的程序。(HRESULT的异常:0x8007000B) 问题是您试图使用嵌入式(ServerType=1),但路径上的fbedded.dll(或fbclient.dll)与运行时位不匹配(例如32位对
问题是您试图使用嵌入式(
ServerType=1
),但路径上的fbedded.dll
(或fbclient.dll
)与运行时位不匹配(例如32位对64位)
您确定要使用Firebird embedded吗?配置字符串的其余部分似乎表明您希望连接到普通Firebird服务器,在这种情况下,
ServerType=0
(或者干脆不使用它)会更好,因为这样您就不会依赖于本机dll。错误与您的代码无关。问题在于您正在引用的DLL。您可能使用了错误的版本,或者在64位计算机上使用了32位版本,等等。您的意思是说firebird ado.net数据提供程序DLL可能是错误的??是的,根据错误消息。BadImageFormatException表示由于某种原因它无法读取DLL。@Tim非常感谢。已将平台目标更改为x64,并且正在工作。
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 ID=@ID AND NAME=@NAME;";
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);
}
}