现在我想把sql2000里面的某个存储过程取出然后放到richtextbox里面:        private void ChangeProcedure()//修改存储过程
        {
            //string text;
            string sql = "use LightCtrDb exec   sp_helptext  AddRecord";
            DataSet P_dr = new DataSet();
            P_dr = G_SqlExecute.GetProcedure(sql);//将查询的内容绑定到数据集里            this.richTextBox1.Text = P_dr.GetXml();
            richTextBox1.ScrollBars = RichTextBoxScrollBars.ForcedBoth;
        }
可是取出来之后richtextbox的内容是这样的:
<NewDataSet>
  <Table>
    <Text>CREATE PROCEDURE AddRecord
</Text>
  </Table>
  <Table>
    <Text>(
</Text>
  </Table>
  <Table>
    <Text> @number INT OUTPUT,
</Text>
  </Table>
  <Table>
    <Text> @room nvarchar(10),
</Text>
  </Table>
  <Table>
    <Text> @floor nvarchar(10)
</Text>
  </Table>
  <Table>
    <Text>)
</Text>
  </Table>
  <Table>
    <Text>AS
</Text>
  </Table>
  <Table>
    <Text>INSERT INTO Table1
</Text>
  </Table>
  <Table>
    <Text>(
</Text>
  </Table>
  <Table>
    <Text>    编号,
</Text>
  </Table>
  <Table>
    <Text>     房间,
</Text>
  </Table>
  <Table>
    <Text>     层
</Text>
  </Table>
  <Table>
    <Text>)
</Text>
  </Table>
  <Table>
    <Text>VALUES
</Text>
  </Table>
  <Table>
    <Text>(
</Text>
  </Table>
  <Table>
    <Text>     @number,
</Text>
  </Table>
  <Table>
    <Text> @room,
</Text>
  </Table>
  <Table>
    <Text> @floor
</Text>
  </Table>
  <Table>
    <Text>)
</Text>
  </Table>
  <Table>
    <Text>select  @number=@@Identity</Text>
  </Table>
</NewDataSet>我不想要这个XML格式请问大家有没有什么好的方法??????可以只是取出存储过程的内容而已~

解决方案 »

  1.   

    把Text的内容取出来,再合并就可以了可以使用SelectNodesByTagName,就把所有的Text节点选出来了
      

  2.   

    大伙能不能说得再详细一点拜托啦!我用VS2005自带的目录查了一下,根本就没有SelectNodesByTagName属性啊 !
    详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细
      

  3.   

    先把XML转化成DATATABLE,然后你再读的时候就好读了。
      

  4.   

    只是去掉<>的话,用正则表达式把<>里面的内容代替程""就好了this.richTextBox1.Text = System.Text.RegularExpressions.Regex.Replace(P_dr.GetXml(), "<\\w*>|</\\w*>", "");
      

  5.   

    或者你们还有没有其他更好的方法可以从sql2000中取出想要的存储过程,而不用在进行转化就可以得到!
    我觉得楼上两位朋友提供的方法虽然都可以实现,但是实现起来很复杂,步骤很多!
    我想要一种更加简便的方法!
    因为后面我还要在将修改后的存储过程写回SQL2000,这又是一个难题!
    如果用楼上两位朋友说的方法,那么后面写回去的时候可能又要再转换,所以...
    拜托大家再帮我想想办法,除了这种办法以外还有没有其他更好的方法??
      

  6.   

    试试这个,手写的没测过 XmlDocument doc = new XmlDocument();
     string fileName= P_dr.GetXml();
     doc.Load(fileName);
     XmlElement root = doc.DocumentElement;
     XmlNodeList elemList = root.GetElementsByTagName("Text");
      

  7.   

    不行啊!
    XmlElement root = doc.DocumentElement;
     XmlNodeList elemList = root.GetElementsByTagName("Text");这两句代码是什么意思???
      

  8.   

    这句好像没什么用吧
    改成这样试试:        private void ChangeProcedure()//修改存储过程
            {
                //string text;
                string sql = "use LightCtrDb exec   sp_helptext  AddRecord";
                DataSet P_dr = new DataSet();
                P_dr = G_SqlExecute.GetProcedure(sql);//将查询的内容绑定到数据集里            foreach(DataRow dr in P_dr.Tables[0].Rows)
                {
                    richTextBox1.Text += dr[0].ToString() + "\n";
                }
                richTextBox1.ScrollBars = RichTextBoxScrollBars.ForcedBoth;
            }
      

  9.   

    看来你是一个新手。呵呵。很多方法都可以实现嘛。一种是XMLDocument来进行读。一种就用简单的字符串处理方法也可以呀。
      

  10.   

    成功啦!
    现在如果我修改了存储过程怎么把它写回到SQL2000呢?
      

  11.   

    算了。来个简单的直接用 string xml=ds.Tables[0].Select("TEXT")'
    foreach(DataRow dr in xml)
    {
       richTextBox1.Text += dr[0].ToString() + "\n";;
    }
      

  12.   


    刚这里写错错了,应该是LoadXml
      

  13.   

    现在如果我修改了存储过程怎么把它写回到SQL2000呢?也就是替换原来的存储过程!
      

  14.   

    现在如果我修改了存储过程怎么把它写回到SQL2000呢?
      

  15.   


    自己写SQL然后执行
    参考ALTER   PROC
      

  16.   

    应该是GetElementsByTagName ,不是SelectNodeByTagName。