我想知道是否有人可以提供以下帮助。
using (FbConnection conn = new FbConnection(ConnectionString))
{
conn.Open();
// --------------------------------------------------------------------------
FbCommand command1 = new FbCommand("SELECT @AN_INT FROM RDB$DATABASE", conn);
command1.Parameters.Add("AN_INT", FbDbType.Integer);
try
{
command1.Prepare(); // Message=Dynamic SQL Error
//SQL error code = -804
//Data type unknown
// Source=FirebirdSql.Data.FirebirdClient
// ErrorCode=335544569
// SQLSTATE=42000
}
catch(Exception E)
{
MessageBox.Show(E.Message);
}
// --------------------------------------------------------------------------
FbCommand command2 = new FbCommand("SELECT 123 FROM RDB$DATABASE WHERE 789 >= @AN_INT", conn);
command2.Parameters.Add("AN_INT", FbDbType.Integer);
try
{
command2.Prepare(); // No Problem
}
catch (Exception E)
{
MessageBox.Show(E.Message);
}
}
我的问题是——我从另一个编码员那里接了一个项目,我认为,如果可能的话,我应该更改数据库组件以使用参数化查询;现有技术是将值注入 Sql 字符串。任务是重构一个类以在现有项目中工作。
上面的代码示例演示了一个我必须解决的问题,我想知道还有其他问题。本质上,问题在于创建一个将字符串转换为参数化查询的类。有没有人这样做过,沿途可能有什么陷阱或技巧?