メソッド内でC#でSQL Serverクエリを実行する必要があります。シナリオは次のとおりです。SQL選択入力変数
このメソッドは、string category
という変数を受け入れています。 category = "Heterogeneous"
の値が、私はのように選択するようにしている場合:
SqlCommand myCommand = con.CreateCommand();
if (simCategory == "Heterogeneous")
{
myCommand.CommandText = @"SELECT ProbabilityHeterogeneous FROM Graph
WHERE SourceID = @sourceID AND DestinationID = @destinationID";
}
else if (simCategory == "Low")
{
myCommand.CommandText = @"SELECT ProbabilityLow FROM Graph
WHERE SourceID = @sourceID AND DestinationID = @destinationID";
}
else if (simCategory == "Medium")
{
myCommand.CommandText = @"SELECT ProbabilityMedium FROM Graph
WHERE SourceID = @sourceID AND DestinationID = @destinationID";
}
else if (simCategory == "High")
{
myCommand.CommandText = @"SELECT ProbabilityHigh FROM Graph
WHERE SourceID = @sourceID AND DestinationID = @destinationID";
}
myCommand.Parameters.AddWithValue("@sourceID", sID);
myCommand.Parameters.AddWithValue("@destinationID", dID);
using (SqlDataReader myReader = myCommand.ExecuteReader())
{
while (myReader.Read())
{
inNeighborActivationProbability = Convert.ToDouble(myReader["Probability"]);
}
myReader.Close();
}
を今、このトゥーレはありますか?
あなたの 'commandText'文はどこですか?カテゴリパラメータに応じて変更してください。私はそこに何か問題を見ることができません。 –
@JuanCarlosOropezaは、 'Select @Probability ...'は 'SELECT'の後の変数型を意味しますか? 'commandText'を変更することを提案したら、クエリを変更する必要があるたびに、これをすべて単一のクエリに入れようとしていますか? – maliks
パラメータを使用してフィールド名を変更することはできません。カテゴリに基づいてcommandTextを変更し、パラメータを追加してコマンドを実行する必要があります。しかし、クエリを構築するために1つの外部文字列を使用する場合は、SQLインジェクションを取得できるので注意してください。 SQLインジェクションの警告https://xkcd.com/327/ –