从for循环中的表中选择

时间:2012-05-28 19:51:42

标签: c# sql select

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 "];
   }
}

我收到了这个错误

  

ExecuteReader:尚未初始化Connection属性。

在这一行

SqlDataReader rdr = cmd.ExecuteReader();

我该如何解决?

2 个答案:

答案 0 :(得分:4)

您需要将Connection传递给SqlCommand

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

但还有其他错误:

  • 对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 "];   
        }   
    }
    

在第一轮之后,您仍然不清楚您对PatientName的假设是什么

答案 1 :(得分:0)

你告诉sqlcommand使用连接con 尝试

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

虽然看起来这不是很好的编码,但可以使用一些重新设计......