新聞中心
這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
SQL Server XML查詢工具
導(dǎo)讀:SQL Server提供了一個(gè)非常好用的客戶端檢索工具-查詢分析器,但是美中不足的是查詢分析器無(wú)法對(duì)XML查詢給出很好的結(jié)果,用戶無(wú)法完整查看XML結(jié)果集。上學(xué)期給IBM電子商務(wù)班講XML與WebService時(shí),不得不自己寫(xiě)了一個(gè)程序執(zhí)行XML檢索。雖然程序?qū)嵲谟行┖?jiǎn)陋,但畢竟可以完成課堂演示的要求。

程序主體是通過(guò)sqlCommand的ExecuteXmlReader方法完成的。我添加了一些對(duì)特殊字符的MIME編碼(這一部分應(yīng)當(dāng)有現(xiàn)成代碼,不過(guò)我沒(méi)有找到,只好自己將就著寫(xiě)了),以及XML格式處理功能。先貼上一些代碼,具體可以自己下載后看。希望多提寶貴意見(jiàn)。
關(guān)鍵代碼:
- private void btnSearch_Click(object sender, System.EventArgs e)
- {
- string s = "
"; - string endWith = "";
- // 創(chuàng)建連接對(duì)象實(shí)例
- SqlConnection myConnection =
- new SqlConnection(ConfigurationSettings.AppSettings["ConnectString"]);
- SqlCommand myCommand = new SqlCommand(txtCondition.Text, myConnection);
- myCommand.CommandType = CommandType.Text;
- // 創(chuàng)建 XML Reader,并讀取數(shù)據(jù)到 XML 字符串中
- XmlTextReader xmlReader = null;
- try
- {
- // 打開(kāi)數(shù)據(jù)庫(kù)連接
- myConnection.Open();
- // 運(yùn)行存儲(chǔ)過(guò)程并初始化 XmlReader
- xmlReader = (XmlTextReader)myCommand.ExecuteXmlReader();
- while(xmlReader.Read())
- {
- if (xmlReader.NodeType == XmlNodeType.Element)
- {
- s += "<" + xmlReader.Name;
- if (xmlReader.IsEmptyElement)
- endWith ="/";
- else
- endWith = "";
- if (xmlReader.HasAttributes)
- {
- while(xmlReader.MoveToNextAttribute())
- s += " " + xmlReader.Name + "="" + ToMIMEString(xmlReader.Value) + """;
- }
- s += endWith + ">";
- }
- else if (xmlReader.NodeType == XmlNodeType.EndElement)
- {
- s += "" + xmlReader.Name + ">";
- }
- else if (xmlReader.NodeType == XmlNodeType.Text)
- {
- if (xmlReader.Value.Length != 0)
- {
- s += ToMIMEString(xmlReader.Value);
- }
- }
- }
- s+="";
- txtResult.Text = s;
- }
- catch (Exception)
- {
- txtResult.Text = "Got an error";
- //不處理任何錯(cuò)誤
- }
- finally
- {
- // 關(guān)閉數(shù)據(jù)庫(kù)連接并清理 reader 對(duì)象
- myConnection.Close();
- xmlReader = null;
- }
- XmlDocument xmlDoc = new XmlDocument();
- xmlDoc.LoadXml(s);
- //=============================================
- //將結(jié)果寫(xiě)入
- //=============================================
- try
- {
- MemoryStream ms = new MemoryStream();
- XmlTextWriter xtw = new XmlTextWriter(ms, Encoding.UTF8);
- xtw.Formatting = Formatting.Indented;
- xmlDoc.Save(xtw);
- byte[] buf = ms.ToArray();
- txtResult.Text = Encoding.UTF8.GetString(buf,0,buf.Length);
- xtw.Close();
- }
- catch
- {
- txtResult.Text = "出現(xiàn)錯(cuò)誤!";
- }
- }
- private string ToMIMEString(string s)
- {
- StringBuilder sb = new StringBuilder();
- char[] ssource = s.ToCharArray();
- foreach(char c in source)
- {
- if(c=='<')
- sb.Append("<");
- else if(c=='&')
- sb.Append("&");
- else if(c=='>')
- sb.Append(">");
- else if(c=='"')
- sb.Append(""");
- else
- sb.Append(c);
- }
- return sb.ToString();
- }
數(shù)據(jù)庫(kù)連接可以通過(guò)修改 XML_Search.exe.config 文件實(shí)現(xiàn)。程序?qū)Ρ镜啬J(rèn)SQL實(shí)例的Northwind數(shù)據(jù)庫(kù)執(zhí)行XML查詢。
【編輯推薦】
- SQL Server XML 入門的18句話
- SQL Server管理工具的升級(jí)
- 深入討論SQL Server 表的主鍵問(wèn)題
- SQL Server數(shù)據(jù)庫(kù)中對(duì)圖片進(jìn)行保存和輸出
網(wǎng)站名稱:SQL Server XML查詢工具
當(dāng)前地址:http://fisionsoft.com.cn/article/cdepgsi.html


咨詢
建站咨詢
