SQLPrimaryKeys主键信息查询示例代码
c
typedef struct
{
char tableCat[50];
SQLLEN tableCatLen;
char tableSchem[50];
SQLLEN tableSchemLen;
char tableName[50];
SQLLEN tableNameLen;
char columnName[50];
SQLLEN columnNameLen;
short keySeq;
SQLLEN keySeqLen;
char pkName[50];
SQLLEN pkNameLen;
}PrimaryKeysInfo;
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);
ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
ret = SQLPrimaryKeys(hstmt, (SQLCHAR*)NULL, 0, (SQLCHAR*)"SYSDBA", SQL_NTS, (SQLCHAR*)"MYTALBE", SQL_NTS);
PrimaryKeysInfo info;
ret = SQLBindCol(hstmt, 1, SQL_C_CHAR, info.tableCat, 50, &info.tableCatLen);
ret = SQLBindCol(hstmt, 2, SQL_C_CHAR, info.tableSchem, 50, &info.tableSchemLen);
ret = SQLBindCol(hstmt, 3, SQL_C_CHAR, info.tableName, 50, &info.tableNameLen);
ret = SQLBindCol(hstmt, 4, SQL_C_CHAR, info.columnName, 50, &info.columnNameLen);
ret = SQLBindCol(hstmt, 5, SQL_C_SHORT, &info.keySeq, 2, &info.keySeqLen);
ret = SQLBindCol(hstmt, 6, SQL_C_CHAR, info.pkName, 50, &info.pkNameLen);
while (TRUE)
{
ret = SQLFetch(hstmt);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
break;
printf("Catalog: %s, Schema: %s, Name: %s, ColName: %s, Seq: %d, PkName: %s\n",
info.tableCat, info.tableSchem, info.tableName, info.columnName, info.keySeq, info.pkName);
}
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
}