【问题标题】:Select from a table in for loop从 for 循环中的表中选择
【发布时间】:2012-05-28 19:51:41
【问题描述】:
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();

我该如何解决?

【问题讨论】:

    标签: c# sql select


    【解决方案1】:

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

    【讨论】:

    • 之后我会做另一个操作,但我需要先从表格中选择
    【解决方案2】:

    你没有告诉 sqlcommand 使用连接 con 试试

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

    虽然看起来这不是很好的编码,并且可以重新设计......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      • 2019-04-06
      • 2013-06-02
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      • 2018-11-11
      相关资源
      最近更新 更多