Технологии
как подключиться к базе из сервиса??? - вопрос №1136927
код типа: SQLHENV henv; SQLHDBC hdbc; SQLRETURN retcode; retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) { retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) { retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) { SQLSetConnectAttr(hdbc,SQL_LOGIN_TIMEOUT,(void*) 5, 0); retcode = SQLConnect(hdbc, (SQLCHAR*) «iwdsn», SQL_NTS,(SQLCHAR*) «SYSDBA», SQL_NTS, (SQLCHAR*) «masterkey», SQL_NTS); if (retcode != SQL_SUCCESS){ short i = 1, MsgLen; SQLCHAR SqlState[300]; SQLINTEGER NativeError; SQLCHAR Msg[300]; while ((retcode = SQLGetDiagRec(SQL_HANDLE_DBC, hdbc, i, SqlState, &NativeError, Msg, sizeof(Msg), &MsgLen)) != SQL_NO_DATA) { i++; } } } SQLDisconnect(hdbc); }else SQLFreeHandle(SQL_HANDLE_DBC, hdbc); SQLFreeHandle(SQL_HANDLE_ENV, henv); } не работает в сервисе, а в обычной проге работает. В чем дело??? и как сделать так, чтобы заработало???
август 1, 2014 г.
-
Всего ответов: 2
-
А я SQL_SUCCEEDED проверяю
retc=SQLSetConnectAttr(m_hdbc[i],SQL_COPT_SS_BCP, <br /> (void*)SQL_BCP_ON,SQL_IS_INTEGER); <br /> <span style="color: blue;">if</span> (!SQL_SUCCEEDED(retc)) <br /> { <br /> printError (pSrvProc, <strong><span style="color: green;">"SQLSetConnectAttr(hdbc1,SQL_COPT_SS_BCP,...) failed..."</span></strong>); <br /> res=FALSE; <br /> <span style="color: blue;">break</span>; <br /> } <br /> retc=SQLConnect(m_hdbc[i],(SQLTCHAR*)szDSN,SQL_NTS, <br /> (SQLTCHAR*)szUID,SQL_NTS, <br /> (SQLTCHAR*)szPWD,SQL_NTS); <br /> <span style="color: blue;">if</span> (!SQL_SUCCEEDED(retc)) <br /> { <br /> printError (pSrvProc, <strong><span style="color: green;">"SQLConnect(hdbc1,<span style="color: green;">'MyDSN'</span>,SQL_NTS,...) failed..."</span></strong>); <br /> res=FALSE; <br /> <span style="color: blue;">break</span>; <br /> }
-
А я SQL_SUCCEEDED проверяю
retc=SQLSetConnectAttr(m_hdbc[i],SQL_COPT_SS_BCP, <br /> (void*)SQL_BCP_ON,SQL_IS_INTEGER); <br /> <span style="color: blue;">if</span> (!SQL_SUCCEEDED(retc)) <br /> { <br /> printError (pSrvProc, <strong><span style="color: green;">"SQLSetConnectAttr(hdbc1,SQL_COPT_SS_BCP,...) failed..."</span></strong>); <br /> res=FALSE; <br /> <span style="color: blue;">break</span>; <br /> } <br /> retc=SQLConnect(m_hdbc[i],(SQLTCHAR*)szDSN,SQL_NTS, <br /> (SQLTCHAR*)szUID,SQL_NTS, <br /> (SQLTCHAR*)szPWD,SQL_NTS); <br /> <span style="color: blue;">if</span> (!SQL_SUCCEEDED(retc)) <br /> { <br /> printError (pSrvProc, <strong><span style="color: green;">"SQLConnect(hdbc1,<span style="color: green;">'MyDSN'</span>,SQL_NTS,...) failed..."</span></strong>); <br /> res=FALSE; <br /> <span style="color: blue;">break</span>; <br /> }
Похожие вопросы
Здравствуйте. Что делать если выдает: terminate called after throwing an instance of 'std::filesystem::__cxx11::filesystem_error' what(): filesystem error: status: Too many levels of symbolic links
декабрь 21, 2023 г.
Технологии
Даны два массива целых чисел a и b, каждый их которых не содержит повторяющихся элементов.
ноябрь 2, 2022 г.
Учеба и наука
Реализовать вычислительный алгоритм для функции xor(x1, x2) через функции or(x1, x2) и and(x1, x2) в программной среде (С++, Python и др.).
май 27, 2022 г.
Технологии
C++. Упорядочить строки массива A в порядке убывания сумм цифр первого элемента каждой строки. Код для новичка
февраль 12, 2022 г.
Технологии