пустые значения набора записей - sql сервер 2017 - PullRequest
0 голосов
/ 05 февраля 2020

Я всегда использовал эту строку подключения в своих кодах для подключения к sql серверу:

"Driver={SQL Server};Server=SERVER_ADDRESS;Database=DBNAME;User Id=MYUSER;Password=******;"

На новом веб-сайте, когда я развернул проект на реальном сервере, я заметил, что должен использовать новая строка подключения из-за sql версии сервера:

"Driver={ODBC Driver 17 for SQL Server};Server=SERVER_ADDRESS;Database=DBNAME;User Id=MYUSER;Password=*****;"

Соединение работает нормально, и веб-сайт работает без ошибок, но все значения в наборах записей пусты! У меня 5 меню, поскольку в базе данных 5 записей, но во всех меню отображается пустой текст! Фактически все тексты пусты, однако в базе данных есть текстовые записи (когда я проверяю с помощью SSMS). Нужно ли добавлять что-то новое в мои коды или строку подключения?

Вот как я получаю данные из базы данных:

Set objcon = Server.CreateObject("ADODB.Connection")
objcon.connectionString="Driver={ODBC Driver 17 for SQL Server};Server=SERVER_ADDRESS;Database=DBNAME;User Id=MYUSER;Password=*****;"
objcon.Open
Set rs= Server.CreateObject("ADODB.RecordSet")
rs.CursorType = 2
rs.open "select * from  menu",objcon
while not rs.eof
  Response.Write rs("title")   'I get 5 empty texts here as I have 5 record in database
rs.movenext
wend
rs.close

1 Ответ

2 голосов
/ 06 февраля 2020

Лучше всего использовать OLE DB с ADO classi c. ADO изначально является API-интерфейсом на основе COM и использует MSDA SQL (поставщик Microsoft OLE DB для драйверов ODB C) поверх интерфейса уровня вызовов ODB C, добавляя дополнительный уровень API.

Windows поставляется с SQLOLEDB (провайдер Microsoft OLE DB для SQL Server) для обратной совместимости. Этот драйвер предназначен для использования только с устаревшими API-интерфейсами приложений, такими как ADO classi c. ADO classi c навсегда застрял в мире SQL 2000 и не имеет сопоставлений типов данных для более новых SQL типов данных сервера, представленных за последние 20 лет. Рекомендуется также указывать ключевое слово DataTypeCompatibility=80 строки подключения, чтобы избежать неожиданностей.

Вы также можете использовать драйвер MSOLEDB SQL (драйвер Microsoft OLE DB для SQL Server), который загружается отдельно, как и все современные драйверы SQL Server. Однако существуют различия в поведении между SQLOLEDB и MSOLEDB SQL, которые могут потребовать дополнительного тестирования приложения.

...