あなたのコードを見ると、指定されたペナルティリストに属するデータグリッドのペナルティを入力したいと強く信じています。これが必須の場合は、INクエリを使用できます。
List<string> penalties = new List<string>();
string joinedPenalty = String.Join(",", penalties);
string query = "SELECT * FROM tblpenalty WHERE Area IN (" + joinedPenalty + ");";
using (connection)
{
using (MySqlDataAdapter adapter = new MySqlDataAdapter(query, connection))
{
DataSet ds = new DataSet();
adapter.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
dataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders);
}
}
}
値の生のクエリを渡し、あなたはそれがSQLインジェクションを防ぐようパラメータ化クエリで値を渡す必要があります。
次のコードは、ペナルティの与えられたリストから、所属するすべてのペナルティを移入します。パラメータ化されたINクエリを使用するには、次のような参照を取ることができますexample。
SQLインジェクションを防ぐために、パラメータ化クエリのアプローチ:
var penalties = new List<string>();
var parameters = new string[penalties.Count];
var cmd = new SqlCommand();
for (int i = 0; i < penalties.Count; i++)
{
parameters[i] = $"@Area{i}";
cmd.Parameters.AddWithValue(parameters[i], penalties[i]);
}
string query = $"SELECT * FROM tblpenalty WHERE Area IN ({string.Join(", ", parameters)});";
using (connection)
{
using (MySqlDataAdapter adapter = new MySqlDataAdapter(query, connection))
{
DataSet ds = new DataSet();
adapter.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
dataGridView1.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders);
}
}
例外はありますか? –
番号。エラーはありません。それは空のdatagridview @AkashKC –
あなたのクエリが適切な結果を返していないようです。再度クエリ文字列の連結を避け、代わりにパラメータを使用します。 –