0
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:连接属性尚未初始化。

在这条线上

SqlDataReader rdr = cmd.ExecuteReader();

我该如何解决?

4

2 回答 2

4

您需要将连接传递给 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 做什么

于 2012-05-28T19:54:51.543 回答
0

您没有告诉 sqlcommand 使用连接 con 尝试

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

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

于 2012-05-28T19:57:05.733 回答