Problem mit Anbindung einer Datenbank ans Web
Renegade
- datenbank
0 Thomas
Ich will über ein Intarnet per "HTML" ein Datenbankabfrage starten.
Als Server habe ich NT 4.0 mit dem Internet Information Server(IIS) 4.0 laufen.
Einfache Beispiel wie "Hello World" funktionieren, aber sobald ich eine Verbindung zu einer Datenbank erstellen will,
bekomme ich diese Fehlermeldung:
ADODB.Recordset-Fehler '800a0bb9'
Die Anwendung verwendet Argumente, die vom falschen Typ sind oder außerhalb des Gültigkeitsbereichs liegen oder miteinander in Konflikt stehen.
/007/praktika.asp, Zeile 11
Kann mir jemand helfen? Was muß ich tun damit es funktioniert?
Achso, hier ist noch der Quellcode:
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "person","",""
SQL = "SELECT NNAME FROM Personal WHERE NNAME LIKE 'w%' ORDER BY NNAME ASC"
Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open sql, conn, adOpenStatic, adLockReadOnly
RS.MoveFirst ' Zum ersten Datensatz
do while Not RS.eof
Response.Write(RS.Fields("NNAME") & "<br>")
RS.MoveNext ' Zum naechsten Datensatz
loop
RS.Close ' Recordset-Objekt schliessen
conn.Close ' DB-Verbindung schliessen
%>
Vielen Dank schonmal!!!
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.