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

Я хотел бы подключиться к базе данных 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 ]

1 голос
/ 13 августа 2011

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

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

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

или, возможно,

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

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

1 голос
/ 09 марта 2011

При подключении к 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

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

0 голосов
/ 26 июля 2013

SQLAPI.h используется для подключения к базе данных mysql, так как вы упомянули, что при попытке подключиться к sqlserver вам необходимо использовать ss6API.h вместо http://sqlapi.com/ServerSpecific/SQLServer_DbLibrary.html#Getting%20native%20SQL%20Server%20API**

0 голосов
/ 04 июня 2013
con.Connect("SQLEXPRESS@Test","","", SA_SQLServer_Client);

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

...