for(int j=1;j<14;j++)
    {
        if (myXmlReader.Name == "a" + j.ToString())
        {
           cm.Parameters.AddWithValue("@A" + j.ToString(),myXmlReader.ReadElementString("a" + j.ToString()));                            
         }      }写成这种的总是出错
把cm放到if外层就可以,但是这样就不能取到xml的结点,不知道这是为什么?
因为有几十个参数,手工添加参数实在是太多了。

解决方案 »

  1.   

    if (myXmlReader.Name == "a" + j.ToString())//myXmlReader.Name会自动变么 位置放错了吧
      

  2.   

    cm.Parameters.AddWithValue前是不是要cm.Parameters.Clear()一下?
      

  3.   

    对了,忘了把出错信息加上了,怪我-_-!过程或函数 'AddClientInfo' 需要参数 '@A1',但未提供该参数
      

  4.   

    myXmlReader.ReadElementString("a" + j.ToString())没有读出来
      

  5.   

    可以读的
    我有另一条语句:TextArea1.InnerText += myXmlReader.ReadElementString();
    在TextArea1中可以看到读出的结果PS:csdn现在怎么总是出错
      

  6.   

    if (myXmlReader.Name == "a" + j.ToString())
    不用这么判断,去掉。ReadElementString会自动移动至下一条之前
      

  7.   

    soaringbird() 
    ---------------------------
    那要是自动移动的话我就很难确定是哪个是我要的结点了
      

  8.   

    那你就用XmlDocument来读取吧,想要哪个元素就读哪个元素
      

  9.   

    soaringbird() 
    --------------------------------------------
    哎,我看也只能这样了,这个XmlReader把我折磨了半个月了,简单点的xml文件还应付的来,复杂结构的文件真是力不从心顺便问个问题:我这个Xml文件中有几十个结点(而且结点的结构比较复杂),大文件估计要上百,XmlDocument能使用循环方式来读取再存入数据库吗?
      

  10.   

    XmlReader的定位是快速、非缓存、只读,而XmlDocument功能更强,但是较慢,耗费内存,但是在你这个应用范围,没有大量的数据,是没什么影响的。
    XmlDocument当然可以用循环的方式读取了。
    XmlDocument doc = new XmlDocument();
                doc.Load("items.xml");
                XmlElement root =  doc.DocumentElement;
                Console.WriteLine(root.ChildNodes.Count);
                //直接定位
                XmlNodeList els = root.GetElementsByTagName("item3");
                Console.WriteLine(els[0].InnerText);
                //循环读取1
                XmlNode node = root.FirstChild;            while (node != null)
                {
                    Console.WriteLine("{0}---{1}", node.Name, node.InnerText);
                    node = node.NextSibling;
                }            foreach (XmlNode nod in root.ChildNodes)
                {
                    Console.WriteLine("{0}---{1}", nod.Name, nod.InnerText);
                }