我是C#的新手,但是对C,Python和MATLAB有一定的经验。我编写了一个简单的C#程序,该程序接受一些用户输入并将其转换为(参数化的)SQL查询。我已经成功地将datetimepicker转换为SQL查询;但是,我有另一个参数(序列号),用户可以将其输入到文本框中。他们可以输入多个序列号,以逗号分隔。用户单击“提交”后,将发送SQL查询,并将结果显示在dataGridView中。
它只能使用一个值(即一个序列号),但是当我尝试输入多个值时,它不起作用。
我尝试了一些建议,例如将文本框字符串分成值数组。
private DataTable GetResults()
{
DataTable dtResults = new DataTable();
string connString = ConfigurationManager.ConnectionStrings["dbx"].ConnectionString;
using (SqlConnection con = new SqlConnection(connString))
{
using (SqlCommand cmd = con.CreateCommand())
{
string[] numbers = textBox2.Text.Split(',');
var parameters = new string[numbers.Length];
for (int i = 0; i < numbers.Length; i++)
{
parameters[i] = string.Format("@SN{0}", i);
cmd.Parameters.AddWithValue(parameters[i], numbers[i]);
}
cmd.CommandText = string.Format("SELECT [TestDate],[ParamName],[SerialNumber],[TestDataID],[MeasuredValue]," +
"[MaximumLimit],[MinimumLimit],[PassResult] FROM [dbo].[Device.ParametricTestResults] " +
"WHERE SerialNumber IN ({0}) " +
"AND (TestDate BETWEEN (@start) AND (@end)) " +
"AND PassResult = 1", string.Join(", ", parameters));
cmd.Parameters.AddWithValue("@start", dateTimePicker1.Text);
cmd.Parameters.AddWithValue("@end", dateTimePicker2.Text);
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
dtResults.Load(reader);
}
}
return dtResults;
}
“提交”按钮上附加了以下代码:
private void button12_Click(object sender, EventArgs e)
{
TestResultsdataGridView.DataSource = GetResults();
}
同样,datagridview应该显示多个序列号的条目,但仅适用于一个。