Как вернуть соединение с базой данных из функции? - PullRequest
1 голос
/ 21 октября 2010

Мне нужно изменить устаревший код, написанный на классическом ASP (VBscript).

У меня есть строка, которая устанавливает соединение с базой данных следующим образом:

set m_conn=OpenConn()

Я считаю, что функция OpenConn() находится где-то в DLL. Это плохие новости, потому что мы не можем найти источник для этой DLL. Итак, я работал над заменой этой функции. Это то, что у меня есть:

function OpenConn()

dim conn
set conn = server.CreateObject("adodb.connection")
conn.open "XXXXconnection-stringXXXXX"  
OpenConn = conn

end function

Когда я пытаюсь запустить исходную строку set m_conn=OpenConn() (строка 50), я получаю ошибку ASP:

Microsoft VBScript runtime error '800a01a8' 

Object required: '[string: "Provider=SQLOLEDB.1;"]' 

/path/to/include.asp, line 50 

Мне не очень понятно, как этот синтаксис должен работать. Обычно я работаю в C #, но когда мне нужно сделать что-то подобное в ASP, я бы использовал следующий синтаксис:

set conn = server.createobject("adodb.conection")
conn.activeconnection = "connectionstring"
conn.execute "sql"
set conn = nothing

В любом случае, я ищу правильный синтаксис для OpenConn(), чтобы set m_conn=OpenConn() работал правильно.

Спасибо за любую помощь.

1 Ответ

5 голосов
/ 21 октября 2010

После еще немного возни, я понял.

Определение функции должно было быть:

function OpenConn() 

    dim conn 
    set conn = server.CreateObject("adodb.connection") 
    conn.open "XXXXconnection-stringXXXXX"   

    set OpenConn = conn  ' change - added "set"

end function
...