sw=new StreamWriter(this.Path+"\\"+this.FileName);
writer=new XmlTextWriter(sw);
this.lstInfo.Items.Add("开始从数据库提取数据.....");
writer.WriteStartDocument();
writer.WriteStartElement("classes");
MessageBox.Show(writer.WriteState.ToString());
try
{
mycmd=new SqlCommand();
mycmd.Connection=myconn;
mycmd.CommandText="select * from class";
myreader=mycmd.ExecuteReader();
while(myreader.Read())
{
         writer.WriteStartElement("class");
writer.WriteAttributeString("ID",myreader["ID"].ToString());
writer.WriteElementString("Name",myreader["Name"].ToString());
writer.WriteElementString("Nos",myreader["Nos"].ToString());
writer.WriteElementString("Moniter",myreader["Moniter"].ToString());
writer.WriteEndElement();
myreader.Close();
myconn.Close();
this.lstInfo.Items.Add("提取数据成功!");
}
}
catch(Exception er)
{
MessageBox.Show(er.ToString());
}
writer.WriteEndElement();
writer.WriteEndDocument();主要想将数据库中的数据读取到xml文档里,可老是提示:阅读器关闭时Read尝试失败!
请问各位前辈这是什么意思,我试过了SqlDataReader可以从数据库中读取内容啊,为什么会出现这个问题呢,应该如何解决呢,谢谢!!

解决方案 »

  1.   

    myreader.Close();
    myconn.Close();
    这两个语句应该放while循环外面吧
      

  2.   

    peterb(学习中...)  is right
      

  3.   

    不要把myreader.Close();放在while内部,因为会关闭myreader造成阅读器关闭时Read尝试失败!。
      

  4.   

    Rear是用一条读一条,所以必须一直保持数据库连接。
    可以用System.Data.SqlClient.SqlDataAdapter把内容读到dataTable中,再处理。
      

  5.   

    while(myreader.Read())
    {
             writer.WriteStartElement("class");
    writer.WriteAttributeString("ID",myreader["ID"].ToString());
    writer.WriteElementString("Name",myreader["Name"].ToString());
    writer.WriteElementString("Nos",myreader["Nos"].ToString());
    writer.WriteElementString("Moniter",myreader["Moniter"].ToString());
    writer.WriteEndElement();
    myreader.Close();
    myconn.Close();
    this.lstInfo.Items.Add("提取数据成功!");
    }
    你在while循环里面把myreader.Close();了,所以下一次循环时,出现所抛出的异常。
    将myreader.Close();放到循环外面(后面),等循环结束后,再关闭。
      

  6.   

    myreader.Close();
    myconn.Close();
    这两个语句应该写在while外面.