从 for 循环中的表中进行选择

本文关键字:行选 选择 for 循环 | 更新日期: 2023-09-27 18:35:37

for (int i = 0; i < final_query.Length; i++)
{
   con.Open();
   SqlCommand cmd=new SqlCommand("SELECT * fROM TableFFF WHERE Data="+final_query[i]);
   SqlDataReader rdr = cmd.ExecuteReader();
   while (rdr.Read())
   {
      string PatientName = (string)rdr[" Data "];
   }
}

我收到了那个错误

执行读取器:连接属性尚未初始化。

在这一行

SqlDataReader rdr = cmd.ExecuteReader();

我该如何解决它?

从 for 循环中的表中进行选择

你需要将连接传递给 SqlCommand

SqlCommand cmd=new SqlCommand("SELECT * fROM TableFFF WHERE Data="+final_query[i], con); 

但是还有其他错误:

  • 召唤骗子。Open() 应该在 For 循环之外
  • 使用和重用参数,而不是字符串连接

    con.Open();   
    SqlCommand cmd=new SqlCommand("SELECT * fROM TableFFF WHERE Data=@data", con);   
    cmd.Parameters.AddWithValue("@data", 0); // Supposing final_query[i] is an Int32
    for (int i = 0; i < final_query.Length; i++)   
    {   
        cmd.Parameters["@data"].Value = final_query[i];   
        SqlDataReader rdr = cmd.ExecuteReader();   
        while (rdr.Read())   
        {   
            string PatientName = (string)rdr[" Data "];   
        }   
    }
    

目前还不清楚您在第一轮之后假设如何处理患者名称

你不会告诉 sqlcommand 使用连接 con尝试

SqlCommand("SELECT * fROM TableFFF WHERE Data="+final_query[i], con); 

虽然这似乎不是很好的编码,并且可以使用一些重新设计......