как подключиться к базе из сервиса??? - вопрос №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); } не работает в сервисе, а в обычной проге работает. В чем дело??? и как сделать так, чтобы заработало???
01.08.14
2 ответа
c++

Ответы

А я 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 }
01.08.14
А я 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 }
01.08.14
Посмотреть всех экспертов из раздела Технологии > C/C++
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store