ASP SQL Server连接
<%
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数据库,读取数据并关闭连接。我研究过这些例子,并提出了这个问题。但它不工作。请指导我。我哪里错了?ASP SQL Server连接
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
感谢您的快速回复。我对asp很陌生。我没有使用asp.net。我正在编写经典的asp。我将在哪里宣布您提供的功能?在?对不起,如果这是一个愚蠢的问题,但我是新来的。 – user3541625 2014-10-09 10:52:35
好吧,我明白了。许多非常感谢链接@Janusz – user3541625 2014-10-09 10:55:01
为什么包装功能?,所有添加开幕式和闭幕式绒毛是不必要的。 [那篇文章](http://www.shiningstar.net/articles/articles/database/datafunctions.asp?ID=AW)来自2000年8月!而不是一个很好的。 – Lankymart 2014-10-09 12:29:29
一些答案建议包装逻辑到功能没有必要为此。
这只是很多绒毛,是不需要的,只需使用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
这就更好了。谢谢。我是新来的。 – user3541625 2014-10-09 12:19:03
@ user3541625不要太用*接受按钮触发快乐*,有时需要一段时间让人们开始离开答案*(有些人花更多时间在答案上,然后是其他人)*。 – Lankymart 2014-10-09 12:22:37
什么是您的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