【发布时间】:2021-07-18 20:26:29
【问题描述】:
您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,以了解在附近使用的正确语法
我尝试在 C# 中同时使用两个 SQLDataReader。但是有一个错误。行中的错误:
MySqlDataReader dr3 = cmdd3.ExecuteReader();
MySqlDataReader dr4 = cmdd4.ExecuteReader();
代码:
MySqlConnection con1 = new MySqlConnection("Data Source =123.456.78.910; user id = root; password=12345;persistsecurityinfo=True; database=trydata");
con1.Open();
MySqlCommand cmdd3 = new MySqlCommand("Select Count(Distinct(SN) from uat.station where StationNumber = @Station and Status = @status and Date_Time between @DateFrom and @DateTo)", con1);
MySqlCommand cmdd4 = new MySqlCommand("Select Count(Distinct(SN) from uat.station where StationNumber = @Station and Status = @status and Date_Time between @DateFrom and @DateTo)", con1);
for (int i = 0; i < 11; i++) //for loop to run query simultaneously 11times and store data in array
{
if (i == 0)
{
cmdd3.Parameters.AddWithValue("@Station", "Station 1");
cmdd4.Parameters.AddWithValue("@Station", "Station 1");
}
else if (i == 1)
{
cmdd3.Parameters.AddWithValue("@Station", "Station 2");
cmdd4.Parameters.AddWithValue("@Station", "Station 2");
}
else if (i == 2)
{
cmdd3.Parameters.AddWithValue("@Station", "Station 3");
cmdd4.Parameters.AddWithValue("@Station", "Station 3");
}
else if (i == 3)
{
cmdd3.Parameters.AddWithValue("@Station", "Station 4");
cmdd4.Parameters.AddWithValue("@Station", "Station 4");
}
else if (i == 4)
{
cmdd3.Parameters.AddWithValue("@Station", "Station 5");
cmdd4.Parameters.AddWithValue("@Station", "Station 5");
}
else if (i == 5)
{
cmdd3.Parameters.AddWithValue("@Station", "Station 6");
cmdd4.Parameters.AddWithValue("@Station", "Station 6");
}
else if (i == 6)
{
cmdd3.Parameters.AddWithValue("@Station", "Station 7");
cmdd4.Parameters.AddWithValue("@Station", "Station 7");
}
else if (i == 7)
{
cmdd3.Parameters.AddWithValue("@Station", "Station 8");
cmdd4.Parameters.AddWithValue("@Station", "Station 8");
}
else if (i == 8)
{
cmdd3.Parameters.AddWithValue("@Station", "Station 9");
cmdd4.Parameters.AddWithValue("@Station", "Station 9");
}
else if (i == 9)
{
cmdd3.Parameters.AddWithValue("@Station", "Station 10");
cmdd4.Parameters.AddWithValue("@Station", "Station 10");
}
else if (i == 10)
{
cmdd3.Parameters.AddWithValue("@Station", "Station 11");
cmdd4.Parameters.AddWithValue("@Station", "Station 11");
}
cmdd3.Parameters.AddWithValue("@status", "PASS");
cmdd3.Parameters.AddWithValue("@workorder", TextBox3.Text);
cmdd3.Parameters.AddWithValue("@DateFrom", dateTimeFrom);
cmdd3.Parameters.AddWithValue("@DateTo", dateTimeTo);
cmdd4.Parameters.AddWithValue("@status", "FAIL");
cmdd4.Parameters.AddWithValue("@workorder", TextBox3.Text);
cmdd4.Parameters.AddWithValue("@DateFrom", dateTimeFrom);
cmdd4.Parameters.AddWithValue("@DateTo", dateTimeTo);
MySqlDataReader dr3 = cmdd3.ExecuteReader();
MySqlDataReader dr4 = cmdd4.ExecuteReader();
if (dr3.HasRows && dr4.HasRows)
{
while (dr3.Read() && dr4.Read())
{
string firstColum = (i + 1).ToString();
string secondColum = stationName[i]; //pass stations name
string thirdColum = dr3.GetValue(0).ToString(); //pass data SN PASS to thirdColum
string fourthColum = dr4.GetValue(0).ToString(); //pass data SN FAIL to fourthColum
string fifthColum = (Convert.ToInt32(thirdColum) + Convert.ToInt32(fourthColum)).ToString(); //count the total of PASS & FAIL
string sixthColum = ((Convert.ToInt32(thirdColum) / Convert.ToInt32(fifthColum)) * 100).ToString("F"); //Calculate yield of PASS (pass/total)*100 ..
DataTable dtable = new DataTable();
dtable.Columns.Add(new DataColumn("No."));
dtable.Columns.Add(new DataColumn("Station Name"));
dtable.Columns.Add(new DataColumn("Pass SN"));
dtable.Columns.Add(new DataColumn("Fail SN"));
dtable.Columns.Add(new DataColumn("Total"));
dtable.Columns.Add(new DataColumn("Yield Pass"));
RowValues[0] = firstColum;
RowValues[1] = secondColum;
RowValues[2] = thirdColum;
RowValues[3] = fourthColum;
RowValues[4] = fifthColum;
RowValues[5] = sixthColum;
DataRow dRow;
dRow = dtable.Rows.Add(RowValues);
dtable.AcceptChanges();
dataGridView1.DataSource = dtable;
dataGridView1.DataBind();
con1.Close();
}
}
这是否意味着我不能将两个 SQLDataReader 与 1 个连接字符串一起使用? 我也尝试在 web.config 中设置 MultipleActiveResultSets=true 但错误仍然相同。
错误图片:
【问题讨论】:
-
嗨@Seracens,您能否在您的问题中为
cmdd3提供完整的SQLCommand?正如它所提到的,您的查询命令中存在语法错误。谢谢。 -
也分享您正在触发的查询,它必须与此相关
-
您好@YongShun,我已经更新了代码。您可能会在第 3 行看到 cmdd3 的 SQL 命令
-
嗨@RanjitSingh,您所说的查询触发是什么意思?是命令查询吗?