У меня есть старый сайт ASP (написанный давным-давно бывшим сотрудником), который подключается к базе данных ODBC 2003 года с помощью DSN. Серверы были обновлены нашими хостами до 2008 года, и мы больше не можем использовать ODBC, поэтому мне нужно установить соединения DSN-Less.

К сожалению, у меня очень мало знаний об ASP и подключениях к базе данных через ASP. Интересно, может ли кто-нибудь помочь мне изменить код для подключения к базе данных Access без ODBC?

Я думаю, что он подключается с помощью этого кода:

<%
' Get current name of region and intro text
Dim objRec, sql, introtext
sql="SELECT * FROM hometext WHERE home_id = 1"
set objRec=Server.CreateObject("ADODB.Recordset")
objRec.Open sql, "dsn=databasename"
introtext = Replace(objRec("home_introtext"), vbCrLf, "<br />")

' Get the 5 newest news items
Dim objRec2, sql2, newstext
sql2="SELECT TOP 5 news_date, news_text FROM news ORDER BY news_date DESC"
set objRec2=Server.CreateObject("ADODB.Recordset")
objRec2.Open sql2, "dsn=databasename"

' Get all images to appear to page
Dim objRec3, sql3
sql3="SELECT * FROM homeimages ORDER BY homeimage_date DESC"
set objRec3=Server.CreateObject("ADODB.Recordset")
objRec3.Open sql3, "dsn=databasename"

' Get the next 5 events from the current date
Dim objRec4, sql4
sql4="SELECT TOP 5 event_date, event_name FROM events WHERE event_date >= " &         niceDateAccess(Date()) & " ORDER BY event_date"
set objRec4=Server.CreateObject("ADODB.Recordset")
objRec4.Open sql4, "dsn=databasename"
%>

Я не уверен, как все это связано, я не очень скриптер.

Любая (тупая) помощь будет оценена по достоинству!

Благодарность

РЕДАКТИРОВАТЬ: база данных находится в «частной» папке в корневой папке на сервере.

0
user1607021 3 Окт 2012 в 11:42
этот ответ правильный. Пусть первые три строки из этого ответа просто изменят путь к файлу базы данных, а затем измените "dsn=databasename" на conob во всем коде, например: objRec.Open sql, conob, и это вызовет код использовать соединение без DSN.
 – 
Shadow The Spring Wizard
4 Окт 2012 в 10:59

1 ответ

Лучший ответ

Вот пример кода. Измените имя базы данных и имя поля таблицы

set conob = Server.CreateObject("ADODB.Connection")
conob.Provider="Microsoft.Jet.OLEDB.4.0"
conob.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.MapPath("YourDatabaseName.mdb")
Set rsuni = Server.CreateObject("ADODB.Recordset")
sqlStr="select * from Student_Entry"

rsuni.open sqlStr,conob

Вы должны предоставить полный доступ к своей базе данных, под пользователем которой вы вошли в систему.

1
polin 3 Окт 2012 в 12:26
Спасибо за это, хотя я не уверен, куда должен идти этот код и что он заменяет. Если бы вы могли объяснить немного больше, я был бы очень признателен. Я не знаком с этим стилем кодирования, поэтому, если бы вы могли объяснить, как реализовать его для манекена, это было бы хорошо! :)
 – 
user1607021
3 Окт 2012 в 12:39
@ user1607021, основное отличие состоит в том, что в приведенном выше коде не используется явный объект подключения. Код Polin здесь действительно использует явный объект подключения ADO, который открывается с помощью строки подключения. Таким образом, вам не нужен DSN. Я всегда избегаю DSN во всем, что я программирую, даже в локальных клиентских приложениях в MS Access. Соединения без DSN предлагают гораздо большую гибкость и гораздо меньше головной боли.
 – 
HK1
3 Окт 2012 в 18:49
Я пробовал приведенный выше код, но продолжаю получать многочисленные сообщения об ошибках «Object Require: objRec». Вот мой код:

set conob = Server.CreateObject ("ADODB.Connection")
conob.Provider = "Microsoft.Jet.OLEDB.4.0"
conob.Open "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" & server.MapPath ("private / tvr.mdb")
Установить rsuni = Server.CreateObject ("ADODB.Recordset")
sqlStr = "ВЫБРАТЬ * ИЗ hometext WHERE home_id = 1"
objRec.Open sql, conob
 – 
user1607021
19 Окт 2012 в 17:27
Просто напишите имя базы данных, например server.MapPath ("tvr.mdb"). убедитесь, что у пользователя есть полное разрешение на доступ к нему.
 – 
polin
19 Окт 2012 в 22:20