执行Select语句示例代码
c
void main()
{
char szDSN[] = "XuguDB";
char szUID[] = "SYSDBA";
char szAuth[] = "SYSDBA";
SQLHENV henv = NULL;
SQLHDBC hdbc = NULL;
SQLHSTMT hstmt = NULL;
SQLRETURN ret = 0;
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
ret = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
ret = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
ret = SQLConnect(hdbc, (SQLCHAR*)szDSN, SQL_NTS, (SQLCHAR*)szUID, SQL_NTS, (SQLCHAR*)szAuth, SQL_NTS);
if (ret != SQL_SUCCESS)
{
SQLCHAR sqlState[128];
SQLINTEGER nativeErr;
SQLCHAR errMsg[256];
SQLSMALLINT len;
SQLGetDiagRec(SQL_HANDLE_DBC, hdbc, 1, sqlState, &nativeErr, errMsg, 200, &len);
printf("Can't connect to server, reason: %s\n", errMsg);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return;
}
printf("Connect successful!\n");
ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
char sql[] = "select * from mytable";
ret = SQLExecDirect(hstmt, (SQLCHAR*)sql, SQL_NTS);
if (ret != SQL_SUCCESS)
{
SQLCHAR sqlState[128];
SQLINTEGER nativeErr;
SQLCHAR errMsg[256];
SQLSMALLINT len;
SQLGetDiagRec(SQL_HANDLE_STMT, hstmt, 1, sqlState, &nativeErr, errMsg, 200, &len);
printf("SQLExecDirect failed, reason: %s\n", errMsg);
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return;
}
SQLLEN cbLen1, cbLen2, cbLen3, cbLen4, cbLen5;
char col1[30] = { 0 };
char col2[30] = { 0 };
char col3[30] = { 0 };
char col4[30] = { 0 };
char col5[30] = { 0 };
SQLBindCol(hstmt, 1, SQL_C_CHAR, col1, 30, &cbLen1);
SQLBindCol(hstmt, 2, SQL_C_CHAR, col2, 30, &cbLen2);
SQLBindCol(hstmt, 3, SQL_C_CHAR, col3, 30, &cbLen3);
SQLBindCol(hstmt, 4, SQL_C_CHAR, col4, 30, &cbLen4);
SQLBindCol(hstmt, 5, SQL_C_CHAR, col5, 30, &cbLen5);
while (ret == SQL_SUCCESS)
{
ret = SQLFetch(hstmt);
if (ret == SQL_ERROR || ret == SQL_NO_DATA)
break;
printf("%s, %s, %s, %s, %s\n", col1, col2, col3, col4, col5);
}
ret = SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
ret = SQLDisconnect(hdbc);
ret = SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
ret = SQLFreeHandle(SQL_HANDLE_ENV, henv);
}