Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

Ein einfacher Query Analyzer

Geschrieben von: Christian Holm
Kategorie: Datenbank

This printed page brought to you by AlphaSierraPapa

Der heutige Artikel befaßt sich mit einem altbekannten Thema - SQL Statements. Hierbei wird aber nicht auf die einzelnen SQL Statements eingegangen, sondern wie man sich ein ASP Formular codet, in dem man bequem Statements eingeben kann, und dann eine dementsprechende Ausgabe erhält.

Das Formular sollte die Möglichkeit bieten, ein beliebiges SQL Statement einzugeben. Nach einem erfolgten Postback sollte anhand der Eingabe das Statement ausgeführt werden, und falls möglich ein Ergebnis angezeigt werden. Den Sourcecode zu diesem Beispiel finden Sie im Download in der Datei ExSQL.asp.

Das Eingabeformular enthält keine Stolpersteine:

<form method="post">
<table cellpadding="2" cellspacing="2" border="0">
  <tr>
     <td valign="top">SQL Statement:</td>
     <td>  
       <textarea name="txtSQLStmt" rows="8" cols="60"><%=strSQLStmt%>
       </textarea>
     </td>
  </tr>
  <tr>
      <td colspan="2" align="right"><input type="submit" value="Execute"></td>
  </tr>
</table>
</form>

Interessanter hingegen ist der eigentliche Sourcecode. Damit dieser etwas mehr Komfort bzw. Sicherheit bietet, habe ich zusätzlich eine Fehlerbehandlung integriert. Gehen wir also den Sourcecode schrittweise durch:

If bIsPostback Then
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open strConn
    
    On Error Resume Next
    Set objRS = objConn.Execute(strSQLStmt)

    If Err.Number <> 0 Then
      Response.Write "<p>Fehler bei der Ausführung des SQL Statements:<br><b>"
      Response.Write Err.Source & ", " & Err.Description & "</b></p>"
    Else

Dieser Teil wird ausgeführt, wenn ein PostBack stattgefunden hat. Die Variable bIsPostback wurde so vorher mit

bIsPostback = CLng(Request.ServerVariables("CONTENT_LENGTH"))

zugewiesen. Nach der Instanzierung des Connection Objektes und Öffnung der Verbindung zur Datenbank (als Beispiel wurde hier die Northwind Datenbank hardcodiert) beginnt die Fehlerbehandlung. Falls die Number Property des Err Objektes ungleich 0 ist, ist ein Fehler aufgetreten. Dieser wird dann mit den Properties Source und Description beschrieben.

Da die Execute Methode eine interessante Fehlerquelle darstellt, ist diese in der Fehlerbehandlung natürlich miteinbezogen. Als nächstes folgt die Alternativbedingung der If-Verzweigung, die ausgeführt wird wenn kein Fehler aufgetreten ist:

Response.Write "<table cellpadding=""2"" cellspacing=""2"" border=""2"">"
  For FieldIndex = 1 To objRS.Fields.Count - 1
     Response.Write "  <th>" & objRS.Fields(FieldIndex).Name & "</th> "
  Next

  While Not objRS.EOF
    Response.Write "<tr>"
    For FieldIndex = 1 To objRS.Fields.Count - 1
        Response.Write "<td>" & objRS(FieldIndex) & "</td>"
    Next
  
    Response.Write "</tr>"
    objRS.MoveNext
  Wend
  
  Response.Write "</table>"

Dieser Code z.B. erlaubt es unabhängig von der vorhandenen Spaltenzahl einer Datenbank des eingegebenen SELECT Statements alle Datensätze zurückzugeben die der Bedingung im Statement genügen. Zwecks der Übersicht werden die gewonnenen Datensätze in einer HTML Tabelle ausgegeben.

Ausgeführt in einem Browser erhält man nach Eingabe eines SQL-Statements folgendes Ergebnis:

Es funktionieren nicht nur SELECT Statements - auch DELETE oder INSERT können ohne Probleme in diesem "Query Analyzer" abgesetzt werden.

Schlußbemerkung

Dies war ein einfaches, erweiterbares Beispielskript, das den praktischen Zweck des Query Analyzers des SQL Servers auf ASP Basis widerspiegelt.

This printed page brought to you by AlphaSierraPapa

Download des Codes

Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20010420.zip

Verwandte Artikel

Aktualisieren von Daten mit dem UPDATE Statement
http:/www.aspheute.com/artikel/20001124.htm
Das SQL Join Statement
http:/www.aspheute.com/artikel/20001023.htm
Datensätze mit dem DELETE Statement löschen
http:/www.aspheute.com/artikel/20001127.htm
Die SQL ORDER BY Clause
http:/www.aspheute.com/artikel/20001201.htm
Einfügen eines Datensatzes mit dem INSERT Statement
http:/www.aspheute.com/artikel/20001107.htm
Query Express für MSDE
http:/www.aspheute.com/artikel/20020322.htm
Stored Procedures einfach erstellt
http:/www.aspheute.com/artikel/20020903.htm
Yet Another Access Database Administration Tool
http:/www.aspheute.com/artikel/20020410.htm

Links zu anderen Sites

Aktuelle MDAC (ADO) Versionen
http://www.microsoft.com/data/

 

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.