Conexión ASP SQL Server
sql-server asp-classic (2)
<%
DIM objConn
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = "Data Source=123.123.12.123,1234;Database=DatabaseName;User Id=Usernm;Password=abcd1234;"
objConn.Open
DIM mySQL
mySQL = "SELECT * FROM [Users] WHERE [User ID]=''1''"
DIM objRS
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.open(mySQL, objConn)
Response.Write objRS("FullName")
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
Quiero conectarme a una base de datos de SQL Server, leer los datos y cerrar la conexión. He estudiado los ejemplos y se me ocurrió esto. Pero no está funcionando. Por favor guíame. ¿Dónde estoy equivocado?
Algunas respuestas han sugerido incluir la lógica en las funciones, no hay necesidad de esto.
Es solo mucha pelusa que no es necesaria, solo use el objeto ADODB.Command
. Hay cientos de formas de abordar esto, pero un método que he encontrado que funciona una y otra vez es dejar que el objeto ADODB.Command
haga el trabajo y luego devolver los resultados en una Array
utilizando el método .GetRows()
del objeto ADODB.Recordset
. De esta forma, puede cerrar los objetos ADODB.Recordset
y ADODB.Command
rápidamente y trabajar solo con la Array
.
Dim conn, cmd, rs, sql, data, search
''Assume value to query comes from a Request Collection.
search = Request("myvalue") & ""
conn = "Data Source=123.123.12.123,1234;Database=DatabaseName;User Id=Usernm;Password=abcd1234;"
sql = "select from mytable where this = ?"
Set cmd = Server.CreateObject("ADODB.Command")
With cmd
''No need to handle connection let ADODB.Command create and destory it.
.ActiveConnection = conn
.CommandType = adCmdText
.CommandText = sql
.Parameters.Append(.CreateParameter("@myparam", adVarWChar, adParamInput, 50))
.Parameters("@myparam").Value = search
Set rs = .Execute()
If Not rs.EOF Then data = rs.GetRows()
Call rs.Close()
Set rs = Nothing
End with
Set cmd = Nothing
''ADODB.Connection is closed when ADODB.Command is destroyed.
If IsArray(data) Then
rows = UBound(data, 2)
For row = 0 To rows
''Return first column of the current row
Call Response.Write("First Column of Row " & row & " is ''" & data(0, row) & "''<br />"
Next
Else
Call Response.Write("No records")
End If
Dim rs, dbConn
Function OpenDB()
Set dbConn = Server.CreateObject("ADODB.Connection")
dbConn.ConnectionTimeout = 300
dbConn.CommandTimeout = 300
dbConn.Open "Data Source=123.123.12.123,1234;Database=DatabaseName;User Id=Usernm;Password=abcd1234;"
End Function
Function CloseDB()
Set rs = Nothing
if ucase(TypeName(dbConn)) = "CONNECTION" then
dbConn.Close
Set dbConn = Nothing
end if
End Function
Function OpenRecordSet(recset, tablename)
Call OpenDB()
Set recset = Server.CreateObject("ADODB.Recordset")
recset.Open tablename, dbConn, 0, 1
End Function
Function CloseRecordSet(recset)
Set recset = Nothing
Call CloseDB()
End Function
Entonces usa
<%
Call OpenDB()
sql = "select from mytable where this = ''that''"
Set rs = dbConn.Execute(sql)
if not rs.EOF then
'' do your stuff!
end if
Call CloseDB()
%>
http://www.shiningstar.net/articles/articles/database/datafunctions.asp?ID=AW