誰かが次のことを手伝ってくれるのだろうか。
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文字列に値を挿入することです。タスクは、既存のプロジェクトで機能するようにクラスをリファクタリングすることです。
上記のコードサンプルは、私が解決しなければならない1つの問題を示していますが、他にもあるのではないかと思います。問題は、基本的に、文字列をパラメータ化されたクエリに変換するクラスを作成することです。誰かがこれをしましたか、そして途中でどんな罠やトリックがあるかもしれませんか?