2014-12-21 3 views
1

У меня есть SQL Server, все, что я знаю об этом, заключается в том, что на компьютере нет установки источника данных ODBC, и мне нужно подключиться к нему с C++. У меня есть имя пользователя и пароль, как подключиться к нему?Как подключиться к SQL Server с C++ без ODBC?

+0

Проверьте библиотека SQLAPI: http://www.sqlapi.com/ –

+0

[Рекомендуемые C++ Абстракции Database Layers] (http://stackoverflow.com/questions/296205/recommended-c-database-abstraction-layers) [Лучший переносимый способ подключения к SQL-серверу с использованием C++] (http://stackoverflow.com/q/205802/1699210) – bummi

ответ

6

Вы можете подключиться через ODBC без DSN, используя SQLDriverConnect. Укажите имя установленного драйвера в строке подключения. SQL-сервер Native клиент 11 Пример:

Driver={SQL Server Native Client 11.0};Server=SqlHostName;Database=SomeSqlDatabase;UID=YourUserName;PWD=YourPassword 

Фрагмент кода:

retcode = SQLDriverConnect(hdbc 
    , NULL 
    , (SQLCHAR*)InConnectionString 
    , (SQLSMALLINT)sizeof(InConnectionString) 
    , (SQLCHAR*)OutConnectionString 
    , (SQLSMALLINT)sizeof(OutConnectionString) 
    , (SQLSMALLINT*)StringLength2Ptr 
    , (SQLUSMALLINT)DriverCompletion 
    ); 

EDIT:

Имя драйвера в строке соединения должен быть заключен в фигурные скобки и точно соответствовать одному перечисленные на вкладке «Драйверы» инструмента «Администратор источника данных ODBC» (odbcad32.exe). Драйвер ODBC с именем «SQL Server» поставляется с окнами, но старый драйвер обеспечивает обратную совместимость. Обычно необходимо использовать отдельно установленный драйвер ODBC, который поддерживает новые типы данных и функции, добавленные после SQL Server 2005.

Последним драйвером ODBC для SQL Server на момент написания этой статьи является автономный «драйвер ODBC 13 для SQL Server »(версия 13.1).

+0

Выглядит хорошо, я попробую это завтра, спасибо! – Phil

+0

Я пробовал этот API с той же строкой соединения, но получаю сообщение об ошибке вроде «[Microsoft] [ODBC Driver Manager] Имя источника данных не найдено и не указан драйвер по умолчанию». Я что-то пропустил? –

+0

@DeepShah, ошибка, которую вы видите, указывает, что драйвер не установлен. Я добавил больше информации к моему ответу, который может помочь. –

2

Я лично использую SQL Server Native Client (OLE DB) в своем приложении C++ для работы с SQL Server 2008. И мне нужен только IP-адрес сервера, порт, имя пользователя и пароль для подключения к нему. (Мы используем аутентификацию SQL Server, а не проверку подлинности Windows). Для разработки/компиляции такого приложения мне нужно только файле sqlncli.h и .lib

Поставщик собственного клиента SQL Server OLE DB представляет собой низкоуровневый API COM , который используется для доступа к данным. Поставщик собственного клиента SQL Server OLE DB рекомендуется для разработки инструментов, утилит или низкоуровневых компонентов , которые требуют высокой производительности. Собственный клиент SQL Server Поставщик OLE DB - это собственный высокопроизводительный поставщик, который напрямую обращается к протоколу табличного потока данных SQL Server (TDS) .

Собственный клиент SQL Server обеспечивает поддержку OLE DB приложениям , подключающимся к SQL Server.

Это низкий уровень, но дает доступ ко всем функциям сервера. Например, я вызываю хранимые процедуры с табличными параметрами, и я использую такие типы, как varbinary (max).

Взгляните на эту статью When to Use SQL Server Native Client

SQL Server Native Client является одна технология, которую можно использовать для доступа к данных в базе данных SQL Server. Для обсуждения различных технологий доступа к данным, см Доступ к данным Технологии дорожной карты

При принятии решения об использовании собственного клиента SQL Server в качестве данных технологии доступа вашего приложения, вы должны рассмотреть несколько факторов.

Для новых приложений, если вы используете управляемый язык программирования , такие как Microsoft Visual C# или Visual Basic, и вы должны получить доступ новых функций в SQL Server, вы должны использовать .NET Framework Data Provider для SQL Server, который является частью .NET Framework.

Если вы разрабатываете приложение на базе COM и должны получить доступ к новым функциям, введенным в SQL Server, необходимо использовать собственный клиент SQL Server . Если вам не нужен доступ к новым функциям сервера SQL , вы можете продолжать использовать компоненты доступа к данным Windows (WDAC).

Для существующих приложений OLE DB и ODBC основной проблемой является , нужно ли вам обращаться к новым функциям SQL Server. Если у вас есть зрелая программа, которая не нуждается в новых функциях сервера SQL , вы можете продолжать использовать WDAC. Но если вам нужно получить доступ к тем новым функциям, таким как тип данных xml, вы должны использовать собственный сервер SQL .

Как собственный клиент SQL Server, так и поддержка MDAC считаются совершенными изоляция транзакций с использованием управления версиями строк, но только SQL Server Native Клиент поддерживает изоляцию транзакции моментальных снимков. (С точки зрения программирования, чтения совершенные изоляции транзакций с версиями строк такая же , как чтение, совершенные сделки.)

Для получения информации о различиях между SQL Server Native Client и MDAC см Обновление приложения на SQL Native сервера Клиент от MDAC.

Смежные вопросы