SQL Server XML查詢工具(附源碼)

來源:互聯網
上載者:User
關鍵代碼:

private void btnSearch_Click(object sender, System.EventArgs e)
{

  string s = "<?xml version="1.0" encoding="utf-8"?><SearchResult>";
  string endWith = "";

  // 建立連線物件執行個體
  SqlConnection myConnection = 
      new SqlConnection(ConfigurationSettings.AppSettings["ConnectString"]);
  SqlCommand myCommand = new SqlCommand(txtCondition.Text, myConnection);
  myCommand.CommandType = CommandType.Text;

  // 建立 XML Reader,並讀取資料到 XML 字串中
  XmlTextReader xmlReader = null;

  try
  {
    // 開啟資料庫連接
    myConnection.Open();

    // 運行預存程序並初始化 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+="</SearchResult>";
    txtResult.Text = s;        
  }
  catch (Exception)
  {
    txtResult.Text = "Got an error";
    //不處理任何錯誤
  }
  finally
  {
    // 關閉資料庫連接並清理 reader 對象
    myConnection.Close();
    xmlReader = null;
  }

  XmlDocument xmlDoc = new XmlDocument();
  xmlDoc.LoadXml(s);
  //=============================================
  //將結果寫入
  //=============================================
  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 = "出現錯誤!";
  }

}
  
private string ToMIMEString(string s)
{
  StringBuilder sb = new StringBuilder();

  char[] source = s.ToCharArray();
  foreach(char c in source)
  {
    if(c=='<')
      sb.Append("&lt;");
    else if(c=='&')
      sb.Append("&amp;");
    else if(c=='>')
      sb.Append("&gt;");
    else if(c=='"')
      sb.Append("&quot;");
    else
      sb.Append(c);
  }
  return sb.ToString();
}

資料庫連接可以通過修改 XML_Search.exe.config 檔案實現。程式對本地預設SQL執行個體的Northwind資料庫執行XML查詢。代碼下載請點這裡。

轉:http://www.cnblogs.com/zhenyulu/articles/42425.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.