Технологии

как подключиться к базе из сервиса??? - вопрос №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

  • Дима - аватарка

    Дима

    7-й в Технологиях

    А я 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 />					}

    август 1, 2014 г.
  • Дима - аватарка

    Дима

    7-й в Технологиях

    А я 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 />					}

    август 1, 2014 г.

Похожие вопросы