Подключение к базе данных SQLServer из консольного приложения C++ с использованием SQLAPI

Я хотел бы подключиться к базе данных SQLServer из моего консольного приложения C++. Я использовал Microsoft SQL Server для создания БД под названием "Тест". Я также "установил" sqlapi от sqlapi.com. Для начала я просто хочу подключиться к этой базе данных, используя модифицированный пример кода, который поставляется вместе с sqlapi.

#include <stdio.h>  // for printf
#include <SQLAPI.h> // main SQLAPI++ header

int main(int argc, char* argv[])
{
    SAConnection con; // create connection object
    printf("Howdy!\n");
    try
    {
        con.Connect("Test","COMPNAME\Username","Pwd", SA_SQLServer_Client); // database name//  user name //password

        printf("We are connected!\n");

        // Disconnect is optional
        // autodisconnect will ocur in destructor if needed
        con.Disconnect();

        printf("We are disconnected!\n");
    }
    catch(SAException &x)
    {
        // SAConnection::Rollback()
        // can also throw an exception
        // (if a network error for example),
        // we will be ready
        try
        {
            // on error rollback changes
            con.Rollback();
        }
        catch(SAException &)
        {
        }
        // print error message
        printf("%s\n", (const char*)x.ErrText());
    }

    return 0;
}

Он компилируется нормально, без ошибок, но не может подключиться. Я знаю немного больше, чем основы C++, но SQL я начал с вчерашнего дня. Итак, у меня есть несколько вопросов о подключении:

  • Во время установки SQL Server 2008 Express я создал новую учетную запись пользователя Windows с именем пользователя с паролем Пароль
  • При попытке соединения достаточно дать имя БД "Test" или оно должно быть Test.db или аналогичным. Для имени пользователя, я должен написать Computername\ Имя пользователя для подключения или просто "Имя пользователя"
  • Я установил флажок "Запускать автоматически" при установке SQLserver, и в taskamanager я вижу, что работает какой-то sql. Это тот сервер, или мне нужно каким-то образом запустить его вручную, прежде чем пытаться подключиться?
  • Нужно ли входить в систему под учетной записью пользователя, под которой я создал базу данных, или достаточно знать имя пользователя и пароль?
  • Метод аутентификации - "Аутентификация Windows"

Я думаю, вы можете понять, в чем проблема, эти знаменитые первые шаги.... (Ну, у меня ушло довольно много времени, прежде чем я понял, как настроить проект в VS для...;-)) Если у вас есть некоторые ответы или подсказки, где я могу их найти (хорошая книга или ссылка), я был бы очень благодарен.

4 ответа

Если вы используете аутентификацию Windows, вам не нужно передавать имя пользователя и пароль. Вам нужно будет правильно настроить базу данных, чтобы кто-нибудь мог "выбирать" привилегии. Я считаю, что общий пользователь в SQL Server называется "гость", и, вероятно, по умолчанию настроен на это.

Я полагаю, что на самом деле проблема в том, что вам нужно передать имя сервера и имя базы данных вместе, например:

con.Connect("SQLEXPRESS@Test","","", SA_SQLServer_Client);

или возможно

con.Connect("ELVIS\SQLEXPRESS@Test","","", SA_SQLServer_Client);

Все, что вам нужно знать, это здесь, вы просто внимательно прочитайте.

При подключении к SQL достаточно имени базы данных. Вам нужно знать сервер, имя экземпляра SQL и базу данных. При установке по умолчанию используется экземпляр по умолчанию, что означает, что вам не нужно указывать имя экземпляра. Обычно вы увидите, что служба установлена ​​как SQL Server (MSSQLSERVER).

Вам не нужно использовать имя пользователя учетной записи, которую вы использовали для создания базы данных, но разрешения должны быть там для любого другого пользователя. По крайней мере, для целей тестирования использование имени, которое вы установили / создали, должно дать вам надлежащее разрешение на доступ к базе данных.

Если вы не знаете, какого пользователя использовать, или какие разрешения имеются, вам следует проверить это в Management Studio. Это ссылка на SQL Server Management Studio 2008 Expres, если она еще не установлена:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=08e52ac2-1d62-45f6-9a4a-4b76a8564a2b

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

con.Connect("SQLEXPRESS@Test","","", SA_SQLServer_Client);

После "@" введите название базы данных.

SQLAPI.h используется для подключения к базе данных mysql, так как вы упомянули, что пытаясь подключиться к sqlserver, вам нужно вместо этого использовать ss6API.h http://sqlapi.com/ServerSpecific/SQLServer_DbLibrary.html**

Другие вопросы по тегам