ASP SQL Server连接

时间:2014-10-09 09:25:03

标签: sql sql-server asp-classic connection-string

 <%
 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
 %>

我想连接到SQL Server数据库,读取数据并关闭连接。我已经研究了这些例子并提出了这个问题。但它不起作用。请指导我。我哪里错了?

2 个答案:

答案 0 :(得分:1)

有些答案建议将逻辑包装到函数中,不需要这样做。

只需要使用ADODB.Command对象,这只是不需要的大量绒毛。有数百种方法可以解决这个问题,但我发现一个又一次工作的方法是让ADODB.Command对象完成工作,然后使用Array方法将结果返回到.GetRows() ADODB.Recordset对象。 这样,您可以快速关闭ADODB.RecordsetADODB.Command个对象,只使用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

答案 1 :(得分:-1)

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

然后使用

<%
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