Thomas: Problem mit Anbindung einer Datenbank ans Web

Beitrag lesen

Ich will über ein Intarnet per "HTML" ein Datenbankabfrage starten...

Auch Hallo!
Du solltest vielleicht hinschreiben, dass du mit ASP arbeitest und das Datenbanksystem mitangeben. Ich kenne mich zwar nicht so gut aus, habe jedoch ein Skript aus dem Internet (weiss nicht mehr genau von wo) ein wehnig abgeändert, so dass ich nun ein SQL-Statement in ein Textfeld eingeben kann und dieses ausgeführt wird. Wenn es sich um ein SELECT-Statement handelt wird eine Tabelle mit dem Resultat ausgegeben. Achja, das DBS ist MS Access. Es sollte jedoch kein Problem sein, es auf ein anderes DBS anzupassen. Hier der Quellcode:

<%@ Language=VBScript %>
<% Option Explicit %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
 <title>SQL testen</title>
</head>
<body>
<%
Dim strDB
Dim strSQLDflt, strSQL
Dim arrSQL
Dim blnShowTable, blnExecSQL
Dim objDB
Dim objExSQL
Dim Fields

strDB = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("..\fpdb\names1.mdb") 'Dies für andere DB ändern!
strSQLDflt = "SELECT * FROM Names1"
strSQL = Trim(Request.Form("strSQL"))
blnShowTable = 0
blnExecSQL = 0

If (strSQL = "") Then strSQL = strSQLDflt

arrSQL = Split(strSQL," ")
If UCase(arrSQL(0)) = "SELECT" Then blnShowTable = 1

blnExecSQL = CLng(Request.ServerVariables("CONTENT_LENGTH"))
%>
<form method="post">
<table border="0">
  <tr>
     <td valign="top">SQL Statement:</td>
     <td>
       <textarea name="strSQL" rows="8" cols="60"><%= strSQL %>
       </textarea>
     </td>
  </tr>
  <tr>
      <td colspan="2" align="right">
        <input type="submit" value="Execute">
      </td>
  </tr>
</table>
</form>
<%
If blnExecSQL > 0 Then
  Set objDB = Server.CreateObject("ADODB.Connection")
  objDB.Open strDB

On Error Resume Next
  Set objExSQL = objDB.Execute(strSQL)

If Err.Number <> 0 Then
    Response.Write "<p>Error: <br>"
    Response.Write Err.Source & ", " & Err.Description & "</p>"
  Else
    If blnShowTable = 1 Then
      Response.Write "<table border=1 cellpadding=5>"
      Response.Write " <tr>"
      For Fields = 0 To objExSQL.Fields.Count -1
        Response.Write "  <th>" & objExSQL.Fields(Fields).Name & "</th>"
      Next
      Response.Write " </tr>"

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

Response.Write "</table>"
    End If
  End If

Set objExSQL = Nothing
  Set objDB = Nothing
End If

%>
</body>
</html>

Für dich ist anscheinend die Ausgabe in die Tabelle wichtig. Du kannst das überflüssige Zeug löschen und das SQL-Statement (strSQL)  nach deinem Bedürfniss setzen. Ich habe dir den ganzen Code abgedruckt, damit du ein bisschen rumspielen kannst (hat mir viel geholfen). Ich hoffe, dass ich dir helfen konnte.

mfg

Thomas

PS: Kennst du www.aspheute.com? die haben z.T. sehr gute Artikel zum Thema ASP und DB.