现在的位置: 首页 > 综合 > 正文

ODBC方式链接数据库

2013年10月19日 ⁄ 综合 ⁄ 共 1299字 ⁄ 字号 评论关闭

SQLHENV henv; // Environment   
SQLHDBC hdbc; // Connection handle
SQLHSTMT hstmt1; // Statement handle

henv=NULL;
hdbc=NULL;
hstmt1=NULL;

int MyDBOpen(void)

{
SQLRETURN retcode;
if(henv) return 0;
//DB already opened
// Allocate environment handle
retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
if (!MYSQLSUCCESS(retcode))
{
henv=NULL;
return 0;
}
// Set the ODBC version environment attribute
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); 
if (MYSQLSUCCESS(retcode))
{
// Allocate connection handle
   retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); 
}
if (!MYSQLSUCCESS(retcode))
{
   SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
hdbc=NULL;
return 0;
}
SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)5, 0);

    // Connect to data source

 // '236MLDB‘ is DataBase Source (ODBC data source) name, not database name;

retcode = SQLConnect(hdbc, (SQLWCHAR*) L"236MLDB", SQL_NTS, L"MLDBUser", SQL_NTS, L"HelloWorld001!", SQL_NTS); 
//retcode = SQLConnect(hdbc, (SQLWCHAR*) L"LocalMLDB", SQL_NTS, L"", SQL_NTS, L"", SQL_NTS);
//    retcode = SQLConnect(hdbc, (SQLWCHAR*) L"V30translations", SQL_NTS, L"V30User", SQL_NTS, L"pw", SQL_NTS);
  if (!MYSQLSUCCESS(retcode))
{ LogSQLError(SQL_HANDLE_DBC,hdbc);
hdbc=NULL;
return 0;
}

    // Allocate statement handle
    retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt1); 
if (!MYSQLSUCCESS(retcode))
hstmt1=NULL;
if (!MYSQLSUCCESS(retcode))
return 0;
return 1;
}

抱歉!评论已关闭.