去掉XML格式

heku518 2008-10-23 10:16:16
现在我想把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格式请问大家有没有什么好的方法??????可以只是取出存储过程的内容而已~
...全文
161 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovefootball 2008-10-23
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 heku518 的回复:]
现在如果我修改了存储过程怎么把它写回到SQL2000呢?
[/Quote]

自己写SQL然后执行
参考ALTER PROC
heku518 2008-10-23
  • 打赏
  • 举报
回复
现在如果我修改了存储过程怎么把它写回到SQL2000呢?
heku518 2008-10-23
  • 打赏
  • 举报
回复
现在如果我修改了存储过程怎么把它写回到SQL2000呢?也就是替换原来的存储过程!
zhnzzy 2008-10-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zhnzzy 的回复:]
试试这个,手写的没测过

C# code
XmlDocument doc = new XmlDocument();
string fileName= P_dr.GetXml();
//doc.Load(fileName);
doc.LoadXml(fileName);
XmlElement root = doc.DocumentElement;
XmlNodeList elemList = root.GetElementsByTagName("Text");
[/Quote]

刚这里写错错了,应该是LoadXml
zhnzzy 2008-10-23
  • 打赏
  • 举报
回复
算了。来个简单的直接用

string xml=ds.Tables[0].Select("TEXT")'
foreach(DataRow dr in xml)
{
richTextBox1.Text += dr[0].ToString() + "\n";;
}
heku518 2008-10-23
  • 打赏
  • 举报
回复
成功了!
heku518 2008-10-23
  • 打赏
  • 举报
回复
成功啦!
现在如果我修改了存储过程怎么把它写回到SQL2000呢?
ludingping 2008-10-23
  • 打赏
  • 举报
回复
看来你是一个新手。呵呵。

很多方法都可以实现嘛。一种是XMLDocument来进行读。一种就用简单的字符串处理方法也可以呀。
我姓区不姓区 2008-10-23
  • 打赏
  • 举报
回复
[Quote=引用楼主 heku518 的帖子:]
现在我想把sql2000里面的某个存储过程取出然后放到richtextbox里面:
C# codeprivatevoidChangeProcedure()//修改存储过程{//string text;stringsql="use LightCtrDb exec sp_helptext AddRecord";
DataSet P_dr=newDataSet();
P_dr=G_SqlExecute.GetProcedure(sql);//将查询的内容绑定到数据集里
this.richTextBox1.Text=P_dr.GetXml();
richTextBox1.ScrollBars=RichTextBoxScrollBars…
[/Quote]
这句好像没什么用吧
改成这样试试:

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

zhnzzy 2008-10-23
  • 打赏
  • 举报
回复
恩。上面错了,应该保存的是名字,上面保存的是内容了等下
heku518 2008-10-23
  • 打赏
  • 举报
回复
提示路径中有非法字符!
heku518 2008-10-23
  • 打赏
  • 举报
回复
不行啊!
XmlElement root = doc.DocumentElement;
XmlNodeList elemList = root.GetElementsByTagName("Text");

这两句代码是什么意思???
zhnzzy 2008-10-23
  • 打赏
  • 举报
回复
试试这个,手写的没测过

XmlDocument doc = new XmlDocument();
string fileName= P_dr.GetXml();
doc.Load(fileName);
XmlElement root = doc.DocumentElement;
XmlNodeList elemList = root.GetElementsByTagName("Text");
heku518 2008-10-23
  • 打赏
  • 举报
回复
或者你们还有没有其他更好的方法可以从sql2000中取出想要的存储过程,而不用在进行转化就可以得到!
我觉得楼上两位朋友提供的方法虽然都可以实现,但是实现起来很复杂,步骤很多!
我想要一种更加简便的方法!
因为后面我还要在将修改后的存储过程写回SQL2000,这又是一个难题!
如果用楼上两位朋友说的方法,那么后面写回去的时候可能又要再转换,所以...
拜托大家再帮我想想办法,除了这种办法以外还有没有其他更好的方法??
justindreams 2008-10-23
  • 打赏
  • 举报
回复
只是去掉<>的话,用正则表达式把<>里面的内容代替程""就好了

this.richTextBox1.Text = System.Text.RegularExpressions.Regex.Replace(P_dr.GetXml(), "<\\w*>|</\\w*>", "");
wtk13 2008-10-23
  • 打赏
  • 举报
回复
先把XML转化成DATATABLE,然后你再读的时候就好读了。
heku518 2008-10-23
  • 打赏
  • 举报
回复
大伙能不能说得再详细一点拜托啦!我用VS2005自带的目录查了一下,根本就没有SelectNodesByTagName属性啊 !
详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细详细
zhnzzy 2008-10-23
  • 打赏
  • 举报
回复
是的拼一下TEXT节点的内容
heku518 2008-10-23
  • 打赏
  • 举报
回复
能够说得再详细一点吗?
cpio 2008-10-23
  • 打赏
  • 举报
回复
把Text的内容取出来,再合并就可以了

可以使用SelectNodesByTagName,就把所有的Text节点选出来了
加载更多回复(2)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧