ASP.NET
  Home arrow ASP.NET arrow Make SQL Queries over HTTP with XML with V...
ASP Free Forums 
.NET  
ASP  
ASP Code  
ASP.NET  
ASP.NET Code  
BrainDump  
C#  
Code Examples  
Database  
Database Code  
IIS  
Microsoft Access  
MS SQL Server  
Silverlight  
Visual Basic.NET  
Windows Scripting  
Windows Security  
XML  
Mobile Linux 
App Generation ROI 
IBM® developerWorks 
ASP Web Hosting  
ASP.NET Web Hosting 
Windows Web Hosting
 
Weekly Newsletter
 
Developer Updates  
Free Website Content 
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Write For Us Get Paid 
Request Media Kit
Contact Us 
Site Map 
Privacy Policy 
Support 
 USERNAME
 
 PASSWORD
 
 
  >>> SIGN UP!  
  Lost Password? 
ASP.NET

Make SQL Queries over HTTP with XML with VS.NET by Lance Robinson
By: aspfree
  • Search For More Articles!
  • Disclaimer
  • Author Terms
  • Rating: 2 stars2 stars2 stars2 stars2 stars / 2
    2002-04-05

    Table of Contents:

    Rate this Article: Poor Best 
      ADD THIS ARTICLE TO:
      Del.ici.ous Digg
      Blink Simpy
      Google Spurl
      Y! MyWeb Furl
    Email Me Similar Content When Posted
    Add Developer Shed Article Feed To Your Site
    Email Article To Friend
    Print Version Of Article
    PDF Version Of Article
     
     
    ADVERTISEMENT


    Make SQL Queries over HTTP with XMLwith VS.Net Lance Robinsonlancer@nsoftware.com This users guide will go through some of the basic steps that one might take in order send an HTTP request to a SQL Server.  The request will instruct the SQL server to return XML, which we will parse and display neatly in a grid. 

    Requirements

    To do this, we'll need SQLXML installed on top of SQL Server 2000.  We'll also make use of the WebForm and XMLp components included in the IP*Works! .Net Edition.  Click here to download a fully functional free trial of this very useful toolkit.  For the purposes of this document, we will assume that IP*Works! .Net Edition has already been installed on the readers computer.  This toolkit includes sample code for both VB.Net and C#, but here we will be coding in VB.Net.

    The first thing we need to do is understand how to make the http request to the SQL server.  The best resource for this information is of course the help documentation for SQLXML itself.  Using this documentation, we learn that we must run a SQLXML configuration application to configure SQLXML with IIS, creating a virtual directory.  After that we'll see that the request is sent just like any other HTTP request, on port 80, with a query string containing the SQL query, ie:

    "SELECT CustomerId, CompanyName FROM Customer"

    http://localhost/sql?sql=select%20CustomerId,%20CompanyName%20from%20Customers%20FOR%20XML%20AUTO

    The resulting response is basic unvalidated XML which includes the results of the query.  Try typing this in your browser to see the output for yourself (replace http://localhost/sql with your own sql virtual directory).

    A Form

    Lets go ahead and get some GUI out of the way.  We'll provide only a very few basic inputs for this demo.  Textboxes for the URL to use to access the server, a query string, a user name, and password.

    I have changed the security settings of the IIS virtual directory to use basic authentication rather than windows integrated.  NTLM authentication will be supported in the very soon to be released (entering Beta in Spr 2002) IP*Works! .Net SSL Edition.

    I am using the user name "sa" (system administrator) and the password "" (blank).  The "Query" button will simply submit the HTTP request to the server using the WebForm component, receive the information back and parse it to the listview box on the form.

    WebForm

    We'll use the WebForm component (rather than HTTP) because it can easily and automatically URL encode the query string information.

    In order to perform Basic Authentication, set the User and Password properties of the component, ie:

    Webform1.User = txtUser.Text
    Webform1.Password = txtPassword.Text

    Next, I set the encoding property of the WebForm component.  This property allows me to select between query string (get), multipart/form data (post), or url encoded (post).  Then we'll add the variables required in the query string using the AddFormVar method (syntax: AddFormVar(varname, varvalue)).  As we see from the SQLXML documentation, the name of the variable is "sql" and the value of that variable is the query that we actually want to send.  Then we'll add "FOR XML AUTO;" to instruct the server how to format the data (for more info on data formatting see the SQLXML documentation).

    Webform1.Encoding = nsoftware.IPWorks.WebformEncodings.encQueryString Webform1.AddFormVar("sql", txtQuery.Text & " FOR XML AUTO;")
    Webform1.SubmitTo(txtServer.Text)

    Now the request has been received by the server and the server sends back the XML response.  In order to catch this response, we can use either the Webform Transfer event, or the TransferredData property.  Right now, we will use the TransferredData property.  This property is ready and available as soon as the SubmitTo method returns.

    Parsing

    Ok, so we have the XML data - now we will use whatever method to parse this xml and display it in a grid or listview.  I am going to demonstrate using the XMLp component to parse this data and split it into a listview. 

    We will dynamically create as many listview columns as there are search terms.  For example, in my example we are searching for CustomerId and CompanyName - so there will be two columns in the resulting listview - CustomerId and CompanyName.

    The XML data that comes back from this request will not be valid, but raw XML with no parent nodes.  We'll just add our own parent node quite simply by prepending and appending a root element around the data.

    'input the xml data received to the xml parser component
    '(add "<root>" element: SQLServer does not provide validated XML)

    Xmlp1.InputText = "<root>" & Webform1.TransferredData & "</root>"
    lvwOutput.Items.Clear()
    lvwOutput.Columns.Clear()
    lvwOutput.Columns.Add("Number", 50, HorizontalAlignment.Left)

    'go to the first element and see what type of data we are getting,
    'set up the appropriate column headers
    Dim i As Integer
    Dim j As Integer
    Xmlp1.XPath = "/root/[1]"  '[1] is the first child
    For i = 1 To Xmlp1.AttrCount 
         'For every attribute of this first child, we create a matching listview column

         lvwOutput.Columns.Add(Xmlp1.AttrName(i), (lvwOutput.Width - 50) / Xmlp1.AttrCount, HorizontalAlignment.Left)
         lvwOutput.Columns(lvwOutput.Columns.Count - 1).Text = Xmlp1.AttrName(i)
    Next i

    'Now, go back to the root
    Xmlp1.XPath = "/root"
    'And for every single child of the root, extract the info and add it to the listview
    For i = 1 To Xmlp1.XChildren
         Xmlp1.XPath = "/root/[" & CStr(i) & "]"
         lvwOutput.Items.Add(CStr(i))
         For j = 1 To Xmlp1.AttrCount
              lvwOutput.Items(lvwOutput.Items.Count - 1).SubItems.Add(Xmlp1.AttrValue(j))
         Next j
    Next i

    There are of course many, many ways to parse the data - and many forms that your data might arrive in depending on the query you use.  Use any query you like, parse the data any way you prefer.  But this simple demonstration shows one easy way to perform SQL queries over HTTP using XML - after you get past the first steps the possibilities are many.

    More Information

    For information about the author, please contact lancer@nsoftware.com.

    For more information about IP*Works! or the WebForm or XMLp components, please visit /n software.

    Copyright © 2002, Lance Robinson - All Rights Reserved.  For publishing permissions, contact lancer@nsoftware.com.


    DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware.

    More ASP.NET Articles
    More By aspfree

     

    IBM® developerWorks developerWorks - FREE Tools!


    NEW! Application Development Tools for the Mainframe Developer

    You probably have thousands of lines of COBOL code loaded with business intelligence and being used to run your business, along with an army of developers maintaining these applications. Learn how to prepare your applications and developers so you can keep that competitive edge and move to a service-oriented architecture with the IBM Rational Enterprise Modernization solutions. Replay is available for 9 months.
    FREE! Go There Now!


    NEW! Discovering the value of WebSphere Process Server

    WebSphere Process Server delivers a unique integration framework that simplifies existing IT resources. Often, as IT assets grow to support business demand, so too does their complexity and manageability. In this webcast, we’ll discuss how WebSphere Process Server helps deliver an SOA infrastructure that provides a common model to orchestrate, mediate, connect, map, and execute the underlying IT functions. Discover how WebSphere Process Server simplifies integration of business processes by leveraging existing IT assets as reusable services without the complexities of traditional integration methodologies.
    FREE! Go There Now!


    NEW! Evaluate IBM Lotus Sametime Standard V8.0

    Visit IBM developerWorks to download a free trial of the latest release of IBM Lotus Sametime Standard V8.0. Lotus Sametime Standard V8.0 is a platform for unified communications and collaboration that combines security features with an extensible, open solution including integrated Voice over IP, geographic location awareness, mobile clients, and a robust Business Partner community offering telephony and video integration.
    FREE! Go There Now!


    NEW! Evaluate IBM Rational Software Analyzer V7.0

    Download a free trial version of IBM Rational Software Analyzer Developer Edition V7.0 to identify bug defects earlier in the software development cycle. Rational Software Analyzer is an extensible software development solution that reduces the expense of bug-fixes by enabling static analysis code reviews and bug identification very early in the development cycle.
    FREE! Go There Now!


    NEW! IBM Rational ClearCase Innovator's Series

    Learn from the best! Find out how developers use Rational ClearCase to be more flexible, innovative and deliver higher quality code in the Rational ClearCase Power Users eKit. This complimentary eKit provides a collection of materials, like articles, whitepapers, and demos that can help you become a power user of Rational ClearCase.
    FREE! Go There Now!


    NEW! Innovate don't duplicate! Asset reuse strategies for success

    Asset Reuse is a key strategy for companies looking to create innovative solutions to solve complex software development problems. Searching for, identifying, updating, using and deploying software assets can be a difficult challenge. Listen to this webcast, to learn about strategies and tools that you can leverage for a successful project, including Rational Asset Manager, Rational Software Architect and WebSphere Service Registry and Repository.
    FREE! Go There Now!


    NEW! Trial download: IBM Rational Manual Tester V7.0.1

    Try the latest version of IBM Rational Manual Tester V7.0.1 by downloading a free trial from IBM developerWorks. This manual test authoring and execution tool promotes test step reuse to reduce the impact of software change on testers and business analysts and addresses the needs of teams performing at least a portion of their testing manually.
    FREE! Go There Now!


    NEW! Try the IBM SOA Sandbox for Connectivity

    Visit IBM developerWorks to try the IBM SOA Sandbox for connectivity. The SOA Sandbox for connectivity provides a trial environment with the tooling and components to help you explore how to effectively connect your infrastructure and integrate all of the people, processes and information in your company. Use the hosted sandbox to explore SOA techniques that streamline connecting existing IT assets together, as well as learn how to connect them to new business logic.
    FREE! Go There Now!


    NEW! Try the IBM SOA Sandbox for Process

    Visit IBM developerWorks to try the IBM SOA Sandbox for process. The SOA Sandbox for process focuses on providing a trial environment with the necessary tooling and components required to gain a better understanding of business processes and how to best improve existing business processes to derive value quickly.
    FREE! Go There Now!


    NEW! Webcast: Introducing the new Information Server and Solutions community: LeverageInformation

    User communities play an important role in communication and collaboration around products, solutions and other areas of special interest to members. Successful communities are able to provide the right mix of content and services to deliver a value proposition that resonates with each audience. Join Tom Inman, VP of Marketing for Information and Platform Solutions as he introduces the new LeverageINFORMATION community. During this webcast, learn about the value provided by the community and how customers and partners derive value from the community in addressing their own technical and business challenges.
    FREE! Go There Now!



    All FREE IBM® developerWorks Tools!

    ASP.NET ARTICLES

    - Adding Content to a Static ASP.NET Website
    - Building a Static ASP.NET Website in a Basic...
    - Develop Your First ASP.NET Website with Visu...
    - Run ASP.NET in Windows XP Home with Cassini ...
    - How to Test a Web Application
    - How to Add Code and Validation Controls to a...
    - Working in Source and Split Views to Build a...
    - How to Build a Web Form for a One-Page Web A...
    - How to Develop a One-Page Web Application
    - An ASP.NET Web Application in Action
    - Developing ASP.NET Web Applications
    - An Introduction to ASP.NET Web Programming
    - Introduction to the ADO.NET Entity Framework...
    - Completing an In-Text Advertising System und...
    - Programming an In-Text Advertising System un...





    © 2003-2009 by Developer Shed. All rights reserved. DS Cluster 4 Hosted by Hostway
    For more Enterprise Application Development news, visit eWeek