一些答案建議包裝邏輯到功能沒有必要爲此。
這只是很多絨毛,是不需要的,只需使用ADODB.Command
對象。有幾百種方法可以解決這個問題,但我發現一次又一次地工作的方法是讓ADODB.Command
對象完成這項工作,然後使用ADODB.Recordset
對象的.GetRows()
方法將結果返回到Array
。 通過這種方式,您可以快速關閉ADODB.Recordset
和ADODB.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
什麼是您的SQL服務器的名稱?你應該使用這個而不是IP和端口(因爲bummi已經簡潔明瞭!)。此外,放入錯誤陷印是一個好主意,因此您可以捕捉。看看[這個迴應](http://stackoverflow.com/questions/26129183/passing-variables-in-classic-asp/26137258#26137258)。 – Paul 2014-10-09 10:12:22
@Paul我沒有使用IP和端口的問題,這只是他們選擇的方法。我所遇到的一個問題是連接字符串(你沒有使用.NET Framework數據提供程序)中的'Provider'或'Driver'屬性在哪裏,請看[SQL Server連接字符串](http:/ /www.connectionstrings.com/sql-server/)來查看連接字符串應該如何格式化*(基於提供者/驅動程序)*。如果您使用IP,請記住設置「Network Library = DBMSSOCN」。 **如果你指定了你正在使用的SQL Server版本,可能會有所幫助。** – Lankymart 2014-10-09 10:22:41
IP只是一個例子。我已將連接字符串更改爲「Data Source = 123.123.12.123,1234; Network Library = DBMSSOCN; Initial Catalog = Users; User Id = Usernm; Password = abcd1234;」但它仍然不起作用。有沒有辦法知道哪條線是錯誤的?像在視覺基礎? – user3541625 2014-10-09 10:42:52