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

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

そして、最初のラウンドの後に患者名をどうするつもりなのかはまだ明確ではありません

于 2012-05-28T19:54:51.543 に答える
0

接続コントライを使用するようにsqlコマンドに指示していません

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

これはあまり良いコーディングではないようですが、再設計を使用することもできます。

于 2012-05-28T19:57:05.733 に答える