powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подключение БД к программе C++
22 сообщений из 22, страница 1 из 1
Подключение БД к программе C++
    #39170641
tory.sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не получается подключиться к БД без использования сторонних настройщиков. Есть БД, созданная в SQL Server 2012, в качестве компилятора C++ - Code::Blocks - MinGW. Сделала строку подключения в ODBC через "SQL Server Native Client 11.0" (пробовала и через "SQL Server" - результат тот же).
Порт 1433 в конфигурациях SQL Server открыт. Библиотеки \libodbc32.a и \libodbccp32.a в Code::Blocks добавлены.

Код подключения:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
#include <iostream>
#include <windows.h>
#include <sqlext.h>
#include <sqltypes.h>
#include <sql.h>
 
using namespace std;
 
void show_error(unsigned int handletype, const SQLHANDLE& handle){
    SQLCHAR sqlstate[1024];
    SQLCHAR message[1024];
    if(SQL_SUCCESS == SQLGetDiagRec(handletype, handle, 1, sqlstate, NULL, message, 1024, NULL))
        cout<<"Message: "<<message<<"\nSQLSTATE: "<<sqlstate<<endl;
}
 
int main(){
    setlocale(LC_ALL,"Russian");
 
    SQLHANDLE sqlenvhandle;
    SQLHANDLE sqlconnectionhandle;
    SQLHANDLE sqlstatementhandle;
    SQLRETURN retcode;
 
    if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &sqlenvhandle))
        goto FINISHED;
 
    if(SQL_SUCCESS!=SQLSetEnvAttr(sqlenvhandle,SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0))
        goto FINISHED;
 
    if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_DBC, sqlenvhandle, &sqlconnectionhandle))
        goto FINISHED;
 
    SQLCHAR retconstring[1024];
    switch(SQLDriverConnect (sqlconnectionhandle,
                NULL,
                (SQLCHAR*)"DRIVER={SQL Server Native Client 11.0};SERVER=localhost\SQLEXPRESS;DATABASE=MyDB;UID=Admin;PWD=NULL;",
                SQL_NTS,
                retconstring,
                1024,
                NULL,
                SQL_DRIVER_NOPROMPT)){
        case SQL_SUCCESS_WITH_INFO:
            show_error(SQL_HANDLE_DBC, sqlconnectionhandle);
            break;
        case SQL_INVALID_HANDLE:
        case SQL_ERROR:
            show_error(SQL_HANDLE_DBC, sqlconnectionhandle);
            goto FINISHED;
        default:
            break;
    }
 
    if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_STMT, sqlconnectionhandle, &sqlstatementhandle))
        goto FINISHED;
 
    if(SQL_SUCCESS!=SQLExecDirect(sqlstatementhandle, (SQLCHAR*)"select * from Tab1", SQL_NTS)){
        show_error(SQL_HANDLE_STMT, sqlstatementhandle);
        goto FINISHED;
    }
    else{
        char name[64];
        char address[64];
        int id;
        while(SQLFetch(sqlstatementhandle)==SQL_SUCCESS){
            SQLGetData(sqlstatementhandle, 1, SQL_C_ULONG, &id, 0, NULL);
            SQLGetData(sqlstatementhandle, 2, SQL_C_CHAR, name, 64, NULL);
            SQLGetData(sqlstatementhandle, 3, SQL_C_CHAR, address, 64, NULL);
            cout<<id<<" "<<name<<" "<<address<<endl;
        }
    }
 
FINISHED:
    SQLFreeHandle(SQL_HANDLE_STMT, sqlstatementhandle );
    SQLDisconnect(sqlconnectionhandle);
    SQLFreeHandle(SQL_HANDLE_DBC, sqlconnectionhandle);
    SQLFreeHandle(SQL_HANDLE_ENV, sqlenvhandle);
 
}



В качестве строки подключения использовала ещё:
Код: plaintext
1.
(SQLCHAR*)"DRIVER={SQL Server Native Client 11.0};SERVER=ADMIN-PK\SQLEXPRESS;DATABASE=MyDB;UID=Admin;PWD=NULL;",



В итоге выдает ошибку:
[Microsoft][SQL Server Native Client 11.0]Поставщик именованных каналов: Не удалось открыть соединение с SQL Server [53].

Помогите найти, пожалуйста, в чём же ошибка. Что ни перепробовала, а только номер ошибки изменяется
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39170651
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо в SQL серверменеджере еще повключать каналы для внешних подключений. Уже не помню точные термины.
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39170663
tory.sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Siemargl,
может что путаю, так все службы запущены и протоколы TCP/IP тоже активны и настроены на 1433 порт. И в Брандмауэр Windows настроены правила для программы и порта.
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39170667
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tory.shпротоколы TCP/IP тоже активны
Ну так и подключайся тогда через TCP/IP, а не Named Pipes.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39170751
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tory.sh,
ты тут через named pipes соединяешся, а вроде как намеревалась через tcp ...

вообще, в driver manager можно все настроить, протестировать и получить строку соединения, Потом ее запихать в программу.
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39170755
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в программе нет ошибок, это не программная проблема, а настройки.
если я не ошибаюсь, если native client ,то часть настроек делается в самом клиенте mssql, там, в частности, нужно указать дефолтный протокол tcp. там все должно быть просто, нужно только аккуратно все указать и проверить.

я бы лучше делал без native client, там у него никаких преимуществ нет, но с настройками сложнее.
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39170814
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivя бы лучше делал без native client,
native client - всего навсего пара из ODBC и OLEDB драйверов

в строке соединения можно задать ВСЕ необходимые параметры - https://msdn.microsoft.com/ru-ru/library/ms130822(v=sql.120).aspx
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39170907
tory.sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv, Спасибо!
Подключала через ODBC - системный DSN - Server SQL и там в настройках клиента TCP/IP вписывала порт 1433 и там же сделала строку подключения, которая и вставлена в код.

[ODBC]
DRIVER=SQL Server
UID=Admin
Address=ADMIN-PK\SQLEXPRESS,1433
Network=DBMSSOCN
DATABASE=MyDB
WSID=ADMIN-PK
APP=Операционная система Microsoft® Windows®
Trusted_Connection=Yes
SERVER=ADMIN-PK\SQLEXPRESS

Код: plaintext
1.
(SQLCHAR*)"DRIVER={SQL Server};SERVER=ADMIN-PK\\SQLEXPRESS;DATABASE=Spectrum;UID=Admin;PWD=;",



Тогда вылезает ошибка:
[Microsoft][ODBC SQL Server Driver][SQL Server]Ошибка входа пользователя "Admin".


В принципе понимаю, что ошибка не должна быть в коде, а где-то в настройках, только вот ни как её не найду, а советы на других форумах ни к чему не привели
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39170912
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tory.shТогда вылезает ошибка:
[Microsoft][ODBC SQL Server Driver][SQL Server]Ошибка входа пользователя "Admin".
А пользователь Admin действительно существует с пустым паролем?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39170920
tory.sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
да, к пользователю Admin пароль не задан, и в таком случае, читала, что поле PWD пустует
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39170934
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tory.shDimitry Sibiryakov,
да, к пользователю Admin пароль не задан, и в таком случае, читала, что поле PWD пустует
а если просто через ODBC администратор добавить DSN
и нажать кнопку "Test data Source" ?
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39170944
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tory.sh,

trusted connection убери и пользователя и пароль задавай явно.
я не помню точно, но вроде бы trusted connection может быть только на named pipes, а у тебя tcp.

без trusted connection явно будет проще, хотя бы для начала его убери...
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39170967
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скромно спрошу: а почему не использовать ADO? Я им цеплялся ко всему что плохо лежит, mssql, oracle, text :)
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39171035
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivtory.sh,

trusted connection убери и пользователя и пароль задавай явно.
я не помню точно, но вроде бы trusted connection может быть только на named pipes, а у тебя tcp.

без trusted connection явно будет проще, хотя бы для начала его убери...
Не переусложняй, Trusted_Connection - работает со всеми транспортами
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39171037
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbСкромно спрошу: а почему не использовать ADO? Я им цеплялся ко всему что плохо лежит, mssql, oracle, text :)
ADO , как ни странно, тоже требует строку соединения
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39171045
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилMasterZivtory.sh,

trusted connection убери и пользователя и пароль задавай явно.
я не помню точно, но вроде бы trusted connection может быть только на named pipes, а у тебя tcp.

без trusted connection явно будет проще, хотя бы для начала его убери...
Не переусложняй, Trusted_Connection - работает со всеми транспортами

я ж написал, что не помню уже... но все равно его надо особо настраивать в базе.
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39171115
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivИзопропилпропущено...

Не переусложняй, Trusted_Connection - работает со всеми транспортами

я ж написал, что не помню уже... но все равно его надо особо настраивать в базе.
Угу. Трастед конеекшн это через виндовс аутентификейшн.
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39171177
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилADO , как ни странно, тоже требует строку соединения
Ну да, я в курсе, а как бы я его использовал со всеми перечисленным субд без CS?
ADO не требует всех этих приседаний с настройками ODBC.
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39171290
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbИзопропилADO , как ни странно, тоже требует строку соединения
Ну да, я в курсе, а как бы я его использовал со всеми перечисленным субд без CS?
ADO не требует всех этих приседаний с настройками ODBC.
ODBC - не требует никаких приседаний -вся информация может быть задана в строке соединения
о каких приседаниях речь?
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39171338
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил, у ТС вроде как проблемы с настройками, а не с CS.
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39171353
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbИзопропил, у ТС вроде как проблемы с настройками, а не с CS.
вот я и советую ему настроить файловый DSN средствами ODBC менеджера, а затем аккуратно скопировать параметры в строку соединения
...
Рейтинг: 0 / 0
Подключение БД к программе C++
    #39171370
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил, а, всё, теперь понял :)
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подключение БД к программе C++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]