目錄
ODBC 數據類型
ODBC SQL 數據類型


ODBC SQL 數據類型 | ||
SQL類型標識 | SQL 92類型標識 | 類型描述 |
SQL_CHAR | CHAR(n) | 定長字符串,其長度為n |
SQL_VARCHAR | VARCHAR(n) | 變長字符串,最大長度為n |
SQL_LONGVARCHAR | LONG VARCHAR | 變長字符串,最大長度取決於數據源 |
SQL_WCHAR | NCHAR(n) | 定長Unicode字符串,其長度為n |
SQL_WVARCHAR | VARNCHAR(n) | 變長Unicode字符串,最大長度為n |
SQL_WLONGVARCHAR | LONG WVARCHAR | 變長Unicode字符串,最大長度取決於數據源 |
SQL_DECIMAL | DECIMAL(p,s) | 精度為p,小數位為s的有符號,精度數值型,其最大精度由驅動程序定義的.(1<=p<=15;s<=p) |
SQL_NUMERIC | NUMERIC(p,s) | 精度為p,小數位為s的有符號,精度數值型,其最大精度由驅動程序定義的.(1<=p<=15;s<=p)[4] |
SQL_SMALLINT | SMALLINT | 精度為p,小數位為0的精確數值型
|
SQL_INTEGER | INTEGER | 進度為10,小數位為0的精度數值型
|
SQL_REAL | REAL | 二進制精度為24的有符號近似數值型
|
SQL_FLOAT | FLOAT | 二進制精度至少為p的有符號近似數值型(最大精度由驅動程序定義) |
SQL_DOUBLE | DOUBLE PRECISON | 二進制精度為53的有符號近似數值型
|
SQL_BIT | BIT | 一位二進制數 |
SQL_TINYINT | TINYINT | 精度為3,小數位為0的精度數值型
|
SQL_BIGINT | BIGINT | 精度為19(有符號)或精度為20(無符號)的精度數值型
|
SQL_BINARY | BINARY(n) | 長度為n的定長二進制數據 |
SQL_VARBINARY | VARBINARY(n) | 最大長度為n的變長二進制數據,最大長度有用戶定義 |
SQL_LONGVARBINARY | LONG VARBINARY | 變長二進制類型,最大長度依賴數據源 |
SQL_TYPE_DATE | DATE | 包含年,月,日碼位並符合格林威治日期 |
SQL_TYPE_TIME | TIME(p) | 包含小時,分鍾和秒碼位,小時有效值為00到23,分鍾有效值為00到59,秒有效值為00到59,p表示秒的精度 |
SQL_TYPE_TIMESTAMP | TIMESTAMP,DATETIME | 包含年,月,日,小時,分鍾和秒碼位,具體定語與DATA和TIME一致 |
SQL_INTERVAL_MONTH | INTERVAL MONTH(p) | 兩日期間月差數,p是其差數值的精度 |
SQL_INTERVAL_YEAR | INTERVAL YEAR(p) | 兩日期間年差數,p是其差數值的精度 |
SQL_INTERVAL_YERA_TO_MONTH | INTERVAL YEAR(p) TO MONTH | 兩日期間年月差數,p是其差數的精度 |
SQL_INTERVAL_DAY | INTERVAL DAY(p) | 兩日期間日的差數,p是其差數的精度 |
SQL_INTERVAL_HOUR | INTERVAL HOUR(p) | 兩日期/時間間小時差數,p是其差數精度 |
SQL_INTERVAL_MINUTE | INTERVAL MINUTE(p) | 兩日期/時間間分鍾差數,p是其差數精度 |
SQL_INTERVAL_SECOND | INTERVAL SECOND(p,q) | 兩日期/時間間秒差數,p是其差數精度,q是其差值的秒精度 |
SQL_INTERVAL_DAY_TO_HOUR | INTERVAL DAY(p) TO HOUR | 兩日期/時間間日和小時差數,p是其差數精度 |
SQL_INTERVAL_DAY_TO_MINUTE | INTERVAL DAY(p) TO MINUTE | 兩日期/時間間日,小時和分鍾差數,p是其差數精度 |
SQL_INTERVAL_DAY_TO_SECOND | INTERVAL DAY(p) TO SECOND(q) | 兩日期/時間間日,小時,分鍾和秒差數,p是其差數精度,q是其差值的秒精度 |
SQL_INTERVAL_HOUR_TO_MINUTE | INTERVAL HOUR(p) TO MINUTE | 兩日期/時間小時和分鍾差,p是其差數精度 |
SQL_INTERVAL_HOUR_TO_SECOND | INTERVAL HOUR(p) TO SECOND(q) | 兩日期/時間小時,分鍾和秒差,p是其差數精度,q是其差值的秒精度 |
SQL_INTERVAL_MINUTE_TO_SECOND | INTERVAL MINUTE(p) TO SECOND (q) | 兩日期/時間間分鍾和秒差,p是其差數精度,q是其差值的秒精度 |
SQL_GUID | GUID | 固定長度的全局唯一標識 |
ODBC C 數據類型


ODBC C 數據類型 | ||
C語言數據類型名稱 | ODBC 數據類型定義 | C語言實際類型 |
SQL_C_CHAR | SQLCHAR * | unsigned char * |
SQL_C_SSHORT | SQLSMALLINT | short int |
SQL_C_USHORT | SQLUSMALLINT | unsigned short int |
SQL_C_SLONG | SQLINTEGER | long int |
SQL_C_ULONG | SQLUINTEGER | unsigned long int |
SQL_C_FLOAT | SQLREAL | float |
SQL_C_DOUBLE | SQLDOUBLE,SQLFLOAT | double |
SQL_C_BIT | SQLCHAR | unsigned char |
SQL_C_STINYINT | SQLSCHAR | signed char |
SQL_C_UTINYINT | SQLCHAR | unsigned char |
SQL_C_SBIGINT | SQLBIGINT | _int64 |
SQL_C_UBIGINT | SQLUBIGINT | unsigned _int64 |
SQL_C_BINARY | SQLCHAR * | unsigned char * |
SQL_C_BOOKMARK | BOOKMARK | unsigned long int |
SQL_C_VARBOOKMARK | SQLCHAR * | unsigned char * |
SQL_C_TYPE_DATE | SQL_DATE_STRUCT | struct tagDATE_STRUCT { SQLSMALLINT year; SQLUSMALLINT month; SQLUSMALLINT day; } DATE_STRUCT; |
SQL_C_TYPE_TIME | SQL_TIME_STRUCT | struct tagTIME_STRUCT { SQLUSMALLINT hour; SQLUSMALLINT minute; SQLUSMALLINT second; } TIME_STRUCT; |
SQL_C_TYPE_TIMESTAMP | SQL_TIMESTAMP_STRUCT | struct tagTIMESTAMP_STRUCT { SQLSMALLINT year; SQLUSMALLINT month; SQLUSMALLINT day; SQLUSMALLINT hour; SQLUSMALLINT minute; SQLUSMALLINT second; SQLUINTEGER fraction; } TIMESTAMP_STRUCT; |
SQL_C_NUMERIC | SQL_NUMERIC_STRUCT | struct tagSQL_NUMERIC_STRUCT { SQLCHAR precision; SQLSCHAR scale; SQLCHAR sign[g]; SQLCHAR val[SQL_MAX_NUMERIC_LEN]; } SQL_NUMERIC_STRUCT; |
SQL_C_GUID | SQLGUID | struct tagSQLGUID { DWORD Data1; WORD Data2; WORD Data3; BYTE Data4[8]; } SQLGUID; |
ODBC SQL 與 ODBC C 數據類型的轉換(圖中用圓點標出的交叉點為允許的類型轉換,其中實心圓點標出的是默認的數據轉換類型,空心圓點標出的是允許的數據轉換類型(允許並不表明一定可以,例如 Char 類型可以轉換為SQL_C_INTEGER , 但是並不是總能成功,當字符為 ’123’ 時可以轉換為整數 123,而字符為 ’odbc’ 時就不能成功)):
ODBC API 函數
ODBC API函數總匯


ODBC API函數類型 | 函數名稱 | 主要功能 |
句柄函數 | SQLAllocHandle | 分配句柄 |
SQLFreeHandle | 釋放句柄 | |
環境函數 | SQLGetEnvAttr | 獲得環境屬性 |
SQLSetEnvAttr | 設置環境屬性 | |
連接函數 | SQLBrowseConnect | 瀏覽連接屬性 |
SQLConnect | 建立連接 | |
SQLDisconnect | 斷開連結 | |
SQLDriverConnect | 使用數據源配置窗口建立連結 | |
SQLGetConnectAttr | 獲得連接屬性 | |
SQLSetConnectAttr | 設置連接屬性 | |
語句函數 | SQLCancel | 取消語句處理 |
SQLFreeStmt | 釋放語句相關資源 | |
SQLGetStmtAttr | 獲得語句屬性 | |
SQLSetStmtAttr | 設置語句屬性 | |
光標函數 | SQLCloseCursor | 關閉光標 |
SQLGetCursorName | 獲得光標名稱 | |
SQLSetCursorName | 設置光標名稱 | |
SQLSetPos | 設置光標位置 | |
編目函數 | SQLColumns | 獲得表中列名列表 |
SQLColumnPrivileges | 獲得列及其權限列表 | |
SQLForeignKeys | 獲得表中外鍵列表 | |
SQLGetTypeInfo | 獲得數據源支持數據類型信息 | |
SQLProcedureColumns | 獲得存儲過程結果集列名列表 | |
SQLProcedure | 獲得存儲過程列表 | |
SQLPrimiryKeys | 獲得主鍵列表 | |
SQLSpecialColumn | 獲得指定表中相關字段信息 | |
SQLStastics | 獲得索引統計列表 | |
SQLTablePrivileges | 獲得表和其權限清單 | |
SQLTables | 獲得表,編目和表類型清單 | |
描述符函數 | SQLCopyDesc | 實現描述符句柄間的復制 |
SQLGetDescFeild | 獲得描述符記錄中單個字段 | |
SQLGetDescRec | 獲得描述符記錄中多個字段 | |
列表函數 | SQLBindCol | 將數據緩沖區綁定到列 |
SQLColAttribute | 獲得列屬性 | |
SQLDescribeCol | 獲得列描述符信息 | |
SQLGetData | 獲得結果集某一列數據 | |
參數函數 | SQLBindParameter | 將SQL語句內參數與緩沖區綁定 |
SQLPutData | 將數據發送到驅動程序 | |
SQLDescribeParam | 獲得SQL愈加內參數描述符信息 | |
SQLParamData | 為SQLPutData提供參數值 | |
結果函數 | SQLMoreResults | 確定指定語句是否有多個結果 |
SQLNumResultCols | 獲得結果中的列數 | |
SQLRowCount | 獲得結果中的記錄數 | |
SQLFetch | 獲取結果集中的下條記錄 | |
SQLFetchScroll | 獲取結果集中指定的記錄 | |
SQL處理函數 | SQLExecDirect | 執行給定的SQL語句 |
SQLExecute | 執行使用參數設置好的SQL語句 | |
SQLPrepare | 為執行准備一個SQL字符串 | |
SQLNativeSql | 得到被驅動程序修改的SQL字符串 | |
診斷函數 | SQLGetDiagField | 獲得診斷數據結構的記錄字段的當前值 |
SQLGetDiagRec | 返回診斷記錄的多個字段的當前值 | |
數據源與驅動程序信息函數 | SQLDataSources | 返回數據源信息 |
SQLDrivers | 獲得驅動程序的描述和屬性關鍵字 | |
SQLGetFunctions | 獲取某個驅動程序是否支持指定的ODBC函數的有關信息 | |
SQLGetInfo | 獲得與連接相關的驅動程序及數據源信息 | |
SQLBulkOperations | 實現批量插入和批量書簽操作 | |
SQLEndTran | 標志事務結束,實現提交或滾回 |
創建數據源


SQLConfigDataSource | 函數原型 | BOOL SQLConfigDataSource( HWND hwndParent, WORD fRequest, LPCSTR lpszDriver, LPCSTR lpszAttributes ); |
|
參數 | hwndParent | 輸入參數,指定父窗口句柄 | |
fRequest | 輸入參數,指定數據源操作類型
|
||
lpszDriver | 輸入參數,指定數據庫驅動程序描述 | ||
lpszAttributes | 輸入參數,包含配置數據源所必須的一組關鍵字-值的列表 |
句柄函數


SQLAllocHandle | 函數原型 | SQLRETURN SQLAllocHandle( SQL SMALLINT HandleType, SQLHANDLE InputHandle, SQLHANDLE *OutputHandlePtr ); |
||
參數 | HandleType | 輸入參數,指定分配句柄類型
|
||
InputHandle | 輸入參數,指定分配新句柄的相關聯的句柄具體值與HandleType相對應 |
|||
OutputHandlePtr | 輸出參數,返回分配的句柄 | |||
返回值 |
|
|||
SQLFreeHandle | 函數原型 | SQLRETURN SQLFreeHandle( SQLSMALLINT HandleType,SQLHANDLE Handle ); | ||
參數 | HandleType | 要分配的句柄類型.UltraLite 支持以下句柄類型:
|
||
Handle | 要釋放的句柄 | |||
注釋 | 當不再需要句柄時,應該對每個使用 SQLAllocHandle 分配的句柄調用 SQLFreeHandle |
環境句柄


SQLGetEnvAttr | 函數原型 | SQLRETURN SQLGetEnvAttr( SQLHENV EnvironmentHandle, SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER BufferLength, SQLINTEGER *StringLength ); |
||
參數 | EnvironmentHandle | 輸入參數,指定獲得環境屬性的環境句柄 | ||
Attribute | 輸入參數,指定要獲得的環境屬性 | |||
ValuePtr | 輸出參數,指定存放要獲得的環境屬性值的緩沖區指針 | |||
BufferLength | 輸入參數,指定ValuePtr指向字符串或二進制緩沖區數據的長度 | |||
StringLength | 輸出參數,指定存放ValuePtr時間長度的緩沖區的指針 | |||
SQLSetEnvAttr | 函數原型 | SQLRETURN SQLSetEnvAttr( SQOHENV EnvironmentHandle, SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength ); |
||
參數 | EnvironmentHandle | 輸入參數,指定設置環境屬性的環境句柄 | ||
Attribute | 輸入參數,指定設置的環境屬性 | |||
ValuePtr | 輸入參數,指定要設置的環境屬性值 | |||
StringLength | 輸入參數,指定ValuePtr指向字符串或二進制緩沖區數據的長度,如果ValuePtr指向其他數據類型,則忽略此參數 |
連接函數


SQLConnect | 函數原型 | SQLRETURN SQLConnect( SQLHDBC ConnectionHandle. SQLCHAR* ServerName, SQLSMALLINT NameLength1, SQLCHAR* UserName, SQLSMALLINT NameLength2, SQLCHAR* Authentication, SQLSMALLINT NameLength3 ); |
||
參數 | ConnectionHandle | 輸入參數,指定建立連接的連接句柄 | ||
ServerName | 輸入參數,指定建立連接的數據源名稱 | |||
NameLength1 | 輸入參數,指定*ServerName的長度 | |||
UserName | 輸入參數,指定建立連接采用的用戶ID | |||
NameLength2 | 輸入參數,指定*UserName的長度 | |||
Authentication | 輸入參數,指定此用戶的密碼 | |||
NameLength3 | 輸入參數,指定*Authentication的長度 | |||
SQLBrowseConnect | 函數格式 | SQLRETURN SQLBrowseConnect( SQLHDBC ConnectionHandle, SQLCHAR* InConnectionString, SQLSMALLINT StringLength1, SQLCHAR* OutConnectionString, SQLSMALLINT BufferLength, SQLSMALLINT*StringLength2Ptr ); |
||
參數 | ConnectionHandle | 輸入參數,指定建立連接的連接句柄 | ||
InConnectionString | 輸入參數,指定了連接字符串,該字符串可以為完全連接串,部分連接串或空字符串 | |||
StringLength1 | 輸入參數,指定InConnectionString指向的緩沖區的字節長度 | |||
OutConnectionString | 輸出參數,返回存放完全連接串的緩沖區的指針 | |||
BufferLength | 輸入參數,指定OutConnectionString指向的緩沖區的字節長度 | |||
StringLength2Ptr | 輸出參數,返回指向OutConnectionString緩沖實際的長度 | |||
說明 | 此函數除了具有其他ODBC API所具有的返回值外,它還有一個比較特別的SQL_NEED_DATA.它表明SQLBrowseConnect函數的連接字符串未獲得足夠的連接屬性,仍需繼續迭代.如果返回SQL_SUCCESS或SQL_SUCCESS_WITH_INFO時,說明應用程序已經成功建立了與數據源的連接 | |||
SQLDriverConnect | 函數原型 | SQLRETURN SQLDriverConnect( SQLHDBC ConnectionHandle, SQLHWND WindowHandle, SQLCHAR* InConnectionString , SQLSMALLINT StringLength1, SQLCHAR* OutConnectionString, SQLSMALLINT BufferLength, SQLSMALLINT* StringLength2Ptr, SQLUSMALLINT DriverCompletion ); |
||
參數 | ConnectionHandle | 輸入參數,指定建立連接的連接句柄 | ||
WindowHandle | 輸入參數,指定建立數據連接的父窗口句柄 | |||
InConnectionString | 輸入參數,指定了連接字符串.該字符串可以為完全連接串,部分連接串或空字符串 | |||
StringLength1 | 輸入參數,指定InConnectionString指向的緩沖區的字節長度 | |||
OutConnectionString | 輸出參數,返回存放網球連接串的緩沖區的指針 | |||
BufferLength | 輸入參數指定了OutConnectionString指向的緩沖區的字節長度 | |||
StringLength2Ptr | 輸出參數,返回指向OutConnectionString緩沖區實際的長度 | |||
DriverCompletion | 輸入參數,指定函數執行的標志
|
|||
SQLSetConnectAttr | 函數原型 | SQLRETURN SQLSetConnectAttr(SQLHDBC ConnectionHandle, SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength ); |
||
參數 | ConnectionHandle | 提供DBC連接句柄 | ||
Attribute | 指定需要設置的屬性類型,在這里設置為值SQL_ATTR_AUTOCOMMIT,需要強制轉換位指針類型 | |||
ValuePtr | 提供參數值 | |||
StringLength | 指定參數的長度,當參數為整數是設置為SQL_IS_INTEGER,當參數為字符串時設置為字符串長度或者為SQL_NTS | |||
SQLDisconnect | 函數原型 | SQLRETURN SQLDisconnect(SQLHDBC ConnectionHandle ); | ||
參數 | ConnectionHandle | 要關閉的連接的句柄 |
語句函數


SQLCancel | 函數原型 | SQLRETURN SQLCancel( SQLHSTMT StatementHandle); | ||
參數 | StatementHandle | 語句句柄 | ||
SQLSetStmtAttr | 函數原型 | SQLRETURN SQLSetStmtAttr( SQLHSTMT StatementHandle, SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength ); |
||
參數 | ConnectionHandle | 提供STMT連接句柄 | ||
Attribute | 指定需要設置的屬性類型 | |||
ValuePtr | 提供參數值 | |||
StringLength | 指定參數的長度,當參數為整數是設置為SQL_IS_INTEGER,當參數為字符串時設置為字符串長度或者為SQL_NTS | |||
這里講一下常用的參數Attribute可能的取值和ValuePtr對應的取值 |
編目函數


SQLColumns | 函數原型 | SQLRETURN SQLColumns( SQLHSTMT StatementHandle, SQLCHAR* , SQLSMALLINT NameLength1, SQLCHAR* SchemaName, SQLSMALLINT NameLength2, SQLCHAR* TableName, SQLSMALLINT NameLength3, SQLCHAR* ColumnName, SQLSMALLINT NameLenght4 ); |
|||
參數 | StatementHandle | 輸入參數,指定語句句柄 | |||
CatalogName | 輸入參數,指定編目名稱 | ||||
NameLength1 | 輸入參數,指定*CatalogName參數長度 | ||||
SchemaName | 輸入參數,指定對綱要字符串搜索的模式 | ||||
NameLength2 | 輸入參數,指定*SchemaName參數的長度 | ||||
TableName | 輸入參數,指定表名 | ||||
NameLength3 | 輸入參數,指定*TableName參數長度 | ||||
ColumnName | 輸入參數,指定列名 | ||||
NameLenght4 | 輸入參數,知道你該*ColumnName參數長度 | ||||
返回值 | 獲得指定表中的列信息,驅動返回此結果集 | ||||
SQLForeignKeys | 函數原型 | SQLRETURN SQLForeignKeys( SQLHSTMT StatementHandle, SQLCHAR* PKCatalogName, SQLSMALLINT NameLength1, SQLCHAR* PKSchemaName, SQLSMALLINT NameLength2, SQLCHAR* PKTableName, SQLSMALLINT NameLength3, SQLCHAR* FKCatalogName, SQLSMALLINT NameLength4, SQLCHAR* FKSchemaName, SQLSMALLINT NameLength5, SQLCHAR* FKTableName, SQLSMALLINT ); |
|||
參數 | StatementHandle | 輸入參數,指定語句句柄 | |||
PKCatalogName | 輸入參數,指定主鍵表編目名 | ||||
NameLength1 | 輸入參數,指定*PKCatalogName參數長度 | ||||
PKSchemaName | 輸入參數,指定對主鍵對綱要字符串搜索的模式 | ||||
NameLength2 | 輸入參數,指定*PKSchemaName參數的長度 | ||||
PKTableName | 輸入參數,指定主鍵表名 | ||||
NameLength3 | 輸入參數,指定*PKTableName參數長度 | ||||
FKCatalogName | 輸入參數,指定外鍵表編目名 | ||||
NameLength4 | 輸入參數,指定*FKCatalogName參數長度 | ||||
FKSchemaName | 輸入參數,指定對外鍵對綱要字符串搜索的模式 | ||||
NameLength5 | 輸入參數,*FKSchemaName參數的長度 | ||||
FKTableName | 輸入參數,指定外鍵表名 | ||||
NameLength6 | 輸入參數,指定*FKTableName參數長度 | ||||
返回值 | 此函數返回兩部分信息,指定表中的外鍵列表和參考指定表主鍵的其他表的外鍵列表,驅動器將每一部分列表作為一個結果集返回 | ||||
SQLGetTypeInfo | 函數原型 | SQLRETURN SQLGetTypeInfo( SQLHSTMT StateMentHandle,SQLSMALLINT DataType ); | |||
參數 | StatementHandle | 輸入參數,指定語句句柄 | |||
DataType | 輸入參數,指定數據類型 | ||||
返回值 | 返回指定數據源支持的所有數據類型的列表,驅動器返回此結果集 | ||||
SQLProcedureColumns | 函數原型 | SQLRETRUN SQLProcedureColumns( SQLHSTMT StatementHandle, SQLCHAR* CatalogName, SQLSMALLINT NameLength1, SQLCHAR* SchemaName, SQLSMALLINT NameLenght2, SQLCHAR* ProcName, SQLSMALLINT NameLenght3, SQLCHAR* ColumnName, SQLSMALLINT NameLength4, ); |
|||
參數 | StatementHandle | 輸入參數,指定語句句柄 | |||
CatalogName | 輸入參數,指定編目名稱 | ||||
NameLength1 | 輸入參數,指定指定*CatalogName參數長度 | ||||
SchemaName | 輸入參數,指定對綱要字符串搜索的模式 | ||||
NameLength2 | 輸入參數,指定*SchemaName參數的長度 | ||||
ProcName | 輸入參數,指定存儲過程名 | ||||
NameLength3 | 輸入參數,指定*ProcName參數長度 | ||||
ColumnName | 輸入參數,指定列名 | ||||
NameLength4 | 輸入參數,指定*ColumnName參數長度 | ||||
返回值 | 返回指定存儲過程的輸入,輸出參數列表及存儲過程結果集的列的列表,驅動返回此結果集 | ||||
SQLProcedure | 函數原型 | SQLRETURN SQLProcedure( SQLHSTMT StatementHandle, SQLCHAR* CatalogName, SQLSMALLINT NameLength1, SQLCHAR* SchemaName, SQLSMALLINT NameLength2, SQLCHAR* ProcName, SQLSMALLINT NameLength3 ); |
|||
參數 | StatementHandle | 輸入參數,指定語句句柄 | |||
CatalogName | 輸入參數,指定編目名稱 | ||||
NameLength1 | 輸入參數,指定指定*CatalogName參數長度 | ||||
SchemaName | 輸入參數,指定對綱要字符串搜索的模式 | ||||
NameLength2 | 輸入參數,指定*SchemaName參數的長度 | ||||
ProcName | 輸入參數,指定存儲過程名 | ||||
NameLength3 | 輸入參數,指定*ProcName參數長度 | ||||
返回值 | 返回數據源中所有存儲過程列表,驅動器返回此結果集 | ||||
SQLPrimiryKeys | 函數原型 | SQLRETURN SQLPrimaryKeys( SQLHSTMT StatementHandle, SQLCHAR* CatalogName, SQLSMALLINT NameLength1, SQLCHAR* SchemaName, SQLSMALLINT NameLenght2, SQLCHAR* TableName, SQLSMALLINT , ); |
|||
參數 | StatementHandle | 輸入參數,指定語句句柄 | |||
CatalogName | 輸入參數,指定編目名稱 | ||||
NameLength1 | 輸入參數,指定*CatalogName參數長度 | ||||
SchemaName | 輸入參數,指定對綱要字符串搜索的模式 | ||||
NameLenght2 | 指定*SchemaName參數長度 | ||||
TableName | 輸入參數,指定表名 | ||||
NameLength3 | 輸入參數,指定*TableName參數長度 | ||||
返回值 | 獲得構成指定表的主鍵列名,驅動器返回此結果集,此函數不支持在一次調用獲得多表的主鍵信息 | ||||
SQLSpecialColumn | 函數原型 | SQLRENTURN SQLSpecialColumns( SQLHSTMT StatementHandle, SQLSMALLINT IdentifierType, SQLCHAR* CatalogName, SQLSMALLINT NameLength1, SQLCHAR* SchemaName, SQLSMALLINT NameLength2, SQLCHAR* TableName, SQLSMALLINT NameLenght3, SQLSMALLINT Scope, SQLSMALLINT Nullable ); |
|||
參數 | StatementHandle | 輸入參數,指定語句句柄 | |||
IdentifierType | 輸入參數,中返回字段類型取值為 l SQL_BEST_ROWID返回能使指定表中的任何行被唯一標示的列或列集 l SQL_ROWVER返回指定表中任意值被事務更新時自動更新的列或列集 | ||||
CatalogName | 輸入參數,指定編目名稱 | ||||
NameLength1 | 輸入參數,指定*CatalogName參數長度 | ||||
SchemaName | 輸入參數,指定指定對綱要字符串搜索的模式 | ||||
NameLength2 | 輸入參數,指定*SchemaName參數長度 | ||||
TableName | 輸入參數,指定表名 | ||||
NameLenght3 | 輸入參數,指定*TableName參數長度 | ||||
Scope | 輸入參數,指定行標識符最小范圍,其取值參考表為 |
||||
Nullable | 輸入參數,指定是否返回包含空值的列,如果該參數取SQL_NO_NULLS.則不包含空值的列,如果取值為SQL_NULLABLE即使列為空值,也將被返回 | ||||
返回值 | 返回指定表的特殊列的列表,具有唯一標識的列,行中任意值被事務更新的列,驅動器返回此結果 | ||||
SQLStastics | 函數原型 | SQLRETURN SQLStatistics( SQLHSTMT StatementHandle, SQLCHAR* CatalogName, SQLSMALLINT NameLength1, SQLCHAR* SchemaName, SQLSMALLINT NameLength2, SQLCHAR* TableName, SQLSMALLINT NameLength3, SQLSMALLINT Unique, SQLSMALLINT Reserved ); |
|||
參數 | StatementHandle | 輸入參數,指定語句句柄 | |||
CatalogName | 輸入參數,指定編目名稱 | ||||
NameLength1 | 輸入參數,指定*CatalogName參數長度 | ||||
SchemaName | 輸入參數,指定對綱要字符串搜索的模式 | ||||
NameLength2 | 輸入參數,指定*SchemaName參數長度 | ||||
TableName | 輸入參數,指定表名 | ||||
NameLength3 | 輸入參數,指定TableName參數長度 | ||||
Unique | 輸入參數,指定了索引類型,取值為兩種SQL_INDEX_UNIQUE(唯一索引)和SQL_INDEX_ALL(任何索引) | ||||
Reserved | 輸入參數,指定結果集中CANDINALITY和PAGES列的重要性.取值如下: l SQL_ENSURE:請求驅動程序無條件取回統計情況,該選項僅僅遵從X/Open標准,不支持ODBC擴展的驅動程序不能使用SQL_ENSURE該選項 l SQL_QUICK請求驅動程序僅僅取回CANDINALITY和PAGES此時,驅動程序不能確保取回的是當前值 | ||||
返回值 | 返回指定表所有的索引統計列表,驅動器返回此結果集 | ||||
SQLTablePrivileges | 函數原型 | SQLTablePrivileges SQLRETURN SQLTablePrivileges( SQLHSTMT StatementHandle, SQLCHAR* CatalogName, SQLSMALLINT NameLength1, SQLCHAR* SchemaName, SQLSMALLINT NameLength2, SQLCHAR* TableName, SQLSMALLINT NameLength3 ); |
|||
參數 | StatementHandle | 輸入參數,指定語句句柄 | |||
CatalogName | 輸入參數,指定編目名稱 | ||||
NameLength1 | 輸入參數,指定*CatalogName參數長度 | ||||
SchemaName | 輸入參數,指定對綱要字符串收拾的模式 | ||||
NameLength2 | 輸入參數,指定*SchemaName參數的長度 | ||||
TableName | 輸入參數,指定表名 | ||||
NameLength3 | 輸入參數,指定*TableName參數的長度 | ||||
返回值 | 返回指定數據源中表及其對應權限的列表,驅動器以結果顯示返回 | ||||
SQLTables | 函數原型 | SQLRETURN SQLTables( SQLHSTMT *StatementHandle, SQLCHAR *CatalogName, SQLSMALLINT NameLenght1, SQLCHAR *SchemaName, SQLSMALLINT NameLength2, SQLCHAR *TableName, SQLSMALLINT NameLenght3, SQLCHAR *TableType, SQLSMALLINT NameLenght4 ); |
|||
參數 | StatementHandle | 輸入參數,指定語句句柄 | |||
CatalogName | 輸入參數,指定編目名稱 | ||||
NameLenght1 | 輸入參數,指定*CatalogName參數長度 | ||||
SchemaName | 輸入參數,指定對綱要字符串搜索的模式 | ||||
NameLenght2 | 指定*SchemaName參數的長度 | ||||
TableName | 輸入參數,指定表名 | ||||
NameLenght3 | 輸入參數,指定TableName參數長度 | ||||
TableType | 輸入參數,指定表類型 | ||||
NameLenght4 | 輸入參數,指定*TableType參數長度 | ||||
返回值 | 該函數返回存儲在指定數據源中的表,編目或模式,表類型的表單,驅動器返回此結果集 |
列表函數


SQLDescribeCol | 函數原型 | SQLRETURN SQLDescribeCol( SQLHSTMT StatementHandle, SQLSMALLINT ColumnNumber, SQLCHAR * ColumnName, SQLSMALLINT BufferLength, SQLSMALLINT * NameLengthPtr, SQLSMALLINT * DataTypePtr, SQLUINTEGER * ColumnSizePtr, SQLSMALLINT * DecimalDigitsPtr, SQLSMALLINT * NullablePtr ); |
|
參數 | StatementHandle | 輸入參數,語句句柄 | |
ColumnNumber | 輸入參數,需要得到的列的序號,從1開始計算 | ||
ColumnName | 輸出參數,得到列的名稱 | ||
BufferLength | 輸入參數,指明ColumnName參數的最大長度 | ||
NameLengthPtr | 輸出參數,返回列名稱的長度 | ||
DataTypePtr | 輸出參數,得到列的ODBC數據類型 | ||
ColumnSizePtr | 輸出參數,得到列的長度 | ||
DecimalDigitsPtr | 輸出參數,當該列為數字類型時返回小數點后數據的位數 | ||
NullablePtr | 輸出參數,指明該列是否允許為空值 | ||
SQLBindCol | 函數原型 | SQLRETURN SQLBindCol( SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, SQLPOINTER TargetValuePtr, SQLINTEGER BufferLength, SQLLEN * StrLen_or_Ind ); |
|
參數 | StatementHandle | 輸入參數,語句句柄 | |
ColumnNumber | 輸入參數,列的位置,如果用戶使用書簽(BookMark),也就是設置語句句柄屬性為SQL_ATTR_USE_BOOKMARKS時,列號的基號為0,0表示書簽,如果用戶不使用書簽,設置語句句柄為SQL_UB_OFF時,其基值為1,它們的順序是按記錄集中返回列的順序遞增的 | ||
TargetType | 輸入參數,指用於參數綁定C語言數據類型,當調用SQLFetch,SQLFetchScroll,SQLBulkOperator,SQLSetPos等函數從數據源檢索數據時,驅動程序將數據類型換行為此類型;當調用SQLBulkOperator,SQLSetPos等函數將數據發送到數據源時,驅動程序將數據裝潢成數據源對應的數據類型 | ||
TargetValuePtr | 延遲輸入/輸出參數,為綁定列數據緩沖區指針,如果其值為空指針,則驅動程序會解除列於數據緩沖區的綁定,但長度/指示器緩沖區與此列綁定,也就是說,如果TargeValuePtr為空指針,后面的參數StrLen_or_IndPtr仍然保存為此列的長度/指示器緩沖區指針 | ||
BufferLength | 輸入參數,指明參數指針所指向的緩沖區的字節數大小.對於字符串和結構需要指明大小,而對於普通的變量如SQLINTEGER,SQLFLOAT等設置為0就可以了 | ||
StrLen_or_IndPtr | 延遲輸入/輸出參數,返回拷貝的緩沖區的數據的字節數 | ||
SQLColAttribute | 函數原型 | SQLRETURN SQLColAttribute( SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLUSMALLINT FieldIdentifier, SQLPOINTER CharacterAttributePtr, SQLSMALLINT BufferLength, SQLSMALLINT *StringLengthPtr, SQLPOINTER NumericAttributePtr ); |
|
參數 | StatementHandle | 輸入參數,指定了相應的語句句柄 | |
ColumnNumber | 輸入參數,指定IRD中要檢索的字段值的列號,列號的基值為1,並按記錄集返回列的順序,順序遞增 | ||
FieldIdentifier | 輸入參數,指定要返回值的行號 | ||
CharacterAttributePtr | 輸出參數,如果輸出字符串,存放相應記錄紙的緩沖區的指針 | ||
BufferLength | 輸入參數,指定緩沖區的長度 | ||
StringLengthPtr | 輸出參數,輸出時間緩沖區的長度 | ||
NumericAttributePtr | 輸出參數,如果輸出參數為數組,存放相應記錄值的緩沖區指針 | ||
SQLGetData | 函數原型 | SQLRETURN SQLGetData( SQLHSTMT StatementHandle, SQLUSMALLINT ColumnNumber, SQLSMALLINT TargetType, SQLPOINTER TargetValuePtr, SQLINTEGER BufferLength, SQLINTEGER * StrLen_or_IndPtr ); |
|
參數 | StatementHanlde | STMT句柄 | |
ClumnNumber | 列號,以1開始 | ||
TargetType | 數據緩沖區(TargetValuePtr)的C語言數據類型 | ||
TargetValuePtr | 獲得此列數據的數據存放的地址 | ||
BufferLength | 數據緩沖區(TargetValuePtr)的長度 | ||
StrLen_or_IndPtr | 返回當前得到的字段的字節長度 | ||
說明 | SQLGetData的另一個用處就是用於得到一些變長字段的實際長度,例如VARCHAR字段,TEXT字段.例如: SQLGetData(hstmt,2,SQL_C_CHAR,szName,0,&cbName); 當你將 BufferLength 參數置為0,則會在 StrLen_or_IndPtr 參數中返回字段的實際長度.但請注意第四個參數必須是一個合法的指針,不能夠為NULL |
參數函數


SQLBindParameter | 函數原型 | SQLRETURN SQLBindParameter( SQLHSTMT StatementHandle, SQLUSMALLINT ParameterNumber, SQLSMALLINT InputOutputType, SQLSMALLINT ValueType, SQLSMALLINT ParameterType, SQLUINTEGER ColumnSize, SQLSMALLINT DecimalDigits, SQLPOINTER ParameterValuePtr, SQLINTEGER BufferLength, SQLINTEGER * StrLen_or_IndPtr ); |
|
參數 | StatementHandle | 執行SQL語句STMT句柄 | |
ParameterNumber | 指明要將變量與第幾個參數綁定,從1開始計算 | ||
InputOutputType | 指明是輸入還是輸出參數.可以取值的范圍為:SQL_PARAM_INPUT,SQL_PARAM_OUTPUT ,SQL_PARAM_INPUT_OUTPUT | ||
ValueType | 指明用於和參數綁定的C語言數據類型 | ||
ParameterType | 指明在存儲過程中ODBC數據類型 | ||
ColumnSize | 指明接收數據的寬度,對於字符串和結構需要指明數據的寬度,而對於普通的變量如SQLINTEGER,SQLFLOAT等設置為0就可以了 | ||
DecimalDigits | 當數據類型為SQL_NUMERIC,SQL_DECIMAL時指明數字小數點的精度,否則填0 | ||
ParameterValuePtr | 在作為輸入參數指明參數的指針,在作為輸出參數時指明接收數據的變量指針 | ||
BufferLength | 指明參數指針所指向的緩沖區的字節數大小.對於字符串和結構需要指明大小,而對於普通的變量如SQLINTEGER,SQLFLOAT等設置為0就可以了 | ||
StrLen_or_IndPtr | 作為輸入參數時指明數據的字節數大小,對於普通的定長變量如SQLINTEGER,SQLFLOAT等設置為0就可以了,對於字符號串需要在此參數中指定字符串數據的長度,或者設置為SQL_NULL_DATA表明此參數為空值,或者設置為SQL_NTS表明字符串以NULL字符結尾,對於結構需要指明結構的長度.當作為輸出參數時,當SQL執行完畢后會在這個參數中返回拷貝的緩沖區的數據的字節數 |
結果集函數


SQLNumResultCols | 函數原型 | SQLRETURN SQLNumResultCols( SQLHSTMT StatementHandle, SQLSMALLINT *ColumnCountPtr ); |
||||||||||||||
參數 | StatementHandle | STMT句柄 | ||||||||||||||
ColumnCountPtr | 返回列數 | |||||||||||||||
SQLDescribeCol | 函數原型 | SQLRETURN SQLDescribeCol(SQLHSTMT StatementHandle, SQLSMALLINT ColumnNumber, SQLCHAR * ColumnName, SQLSMALLINT BufferLength, SQLSMALLINT * NameLengthPtr, SQLSMALLINT * DataTypePtr, SQLUINTEGER * ColumnSizePtr, SQLSMALLINT * DecimalDigitsPtr, SQLSMALLINT * NullablePtr ); |
||||||||||||||
參數 | StatementHandle | STMT句柄 | ||||||||||||||
ColumnNumber | 需要得到的列的序號,從1開始計算 | |||||||||||||||
ColumnName | 得到列的名稱 | |||||||||||||||
BufferLength | 指明ColumnName參數的最大長度 | |||||||||||||||
NameLengthPtr | 返回列名稱的長度 | |||||||||||||||
DataTypePtr | 得到列的ODBC數據類型 | |||||||||||||||
ColumnSizePtr | 得到列的長度 | |||||||||||||||
DecimalDigitsPtr | 當該列為數字類型時返回小數點后數據的位數 | |||||||||||||||
NullablePtr | 指明該列是否允許為空值 | |||||||||||||||
SQLRowCount | 函數原型 | SQLRETURN SQLRowCount(SQLHSTM StatementHandle,SQLINTEGER* RowCountPtr); | ||||||||||||||
參數 | StatementHandle | STMT句柄 | ||||||||||||||
RowCountPtr | 獲得結果集的緩沖區 | |||||||||||||||
說明 | 你可以通過SQLExecDirect執行SQL語句來插入,修改和刪除數據,在執行插入,修改和刪除的SQL語句后就可以通過SQLRowCount函數來得到被影響的數據的行數. Insert into test_t1 values(4, '2002-1-4 11:25' , 'user_4',1.86 ); | |||||||||||||||
SQLFetch | 函數原型 | SQLRETURN SQLFetch(SQLHSTMT StatementHandle); | ||||||||||||||
參數 | StatementHandle | STMT句柄 | ||||||||||||||
說明 | 在你調用SQLExecDirect執行SQL語句后,你需要遍歷結果集來得到數據.StatementHandle是STMT句柄,此句柄必須是被執行過. 當調用SQLFetch 函數后,光標會被移動到下一條記錄處,當光標移動到記錄集的最后一條,函數將會返回SQL_NO_DAT | |||||||||||||||
SQLFetchScroll | 函數原型 | SQLRETURN SQLFetchScroll( SQLHSTMT StatementHandle,SQLSMALLINT FetchOrientation,SQLINTEGER FetchOffset ); | ||||||||||||||
參數 | StatementHandle | STMT句柄 | ||||||||||||||
FetchOrientation | 表明滾動的方式,允許的值如下 ![]() ![]()
|
|||||||||||||||
FetchOffset | 表明光標滾動的位置 | |||||||||||||||
說明 | 光標滾動后,獲取數據的方法和SQLFetch相同.滾動時如果指定的位置超出結果集區域會返回錯誤 |
SQL處理函數


SQLExecDirect | 函數原型 | SQLRETURN SQLExecDirect( SQLHSTMT StatementHandle,SQLCHAR *StatementText,SQLINTEGER TextLength ); | |
參數 | StatementHandle | 輸入參數,設置要執行的語句 | |
StatementText | 輸入參數,設置要執行的SQL語句 | ||
TextLength | 輸入參數,指定*StatementText緩沖區的長度 | ||
SQLPrepare | 函數原型 | SQLRETURN SQLPrepare( SQLHSTMT StatementHandle,SQLCHAR* StatementText,SQLINTEGER TextLength ); | |
參數 | StatementHandle | 輸入參數,設置要准備的語句句柄 | |
StatementText | 輸入參數,設置要執行的SQL語句 | ||
TextLength | 輸入參數,指定*StatementText緩沖區的大小 | ||
SQLExecute | 函數原型 | SQLRETURN SQLExecute(SQLHSTMT StatementHandle); | |
參數 | StatementHandle | 輸入參數,設置要執行的語句句柄 |
SQL診斷函數


SQLGetDiagRec | 函數原型 | SQLRETURN SQLGetDiagRec(SQLSMALLINT HandleType, SQLHANDLE Handle, SQLSMALLINT RecNumber, SQLCHAR * Sqlstate, SQLINTEGER * NativeErrorPtr, SQLCHAR * MessageText, SQLSMALLINT BufferLength, SQLSMALLINT * TextLengthPtr ); |
|
參數 | HandleType | 輸入參數, 指定分配句柄類型
|
|
Handle | 要獲得錯誤信息所處的句柄 | ||
RecNumber | 指明需要得到的錯誤狀態行,從1開始逐次增大 | ||
Sqlstate | 返回錯誤狀態,錯誤代碼和錯誤描述 | ||
NativeErrorPtr | |||
MessageText | |||
BufferLength | 指定MessageText的最大長度 | ||
TextLengthPtr | 指定返回的MessageText中有效的字符數 | ||
返回值 | SQL_SUCCESS,SQL_SUCCESS_WITH_INFO,SQL_ERROR,SQL_INVALID_HANDLE,SQL_NO_DATA.在沒有返回錯誤的情況下你需要反復調用此函數,並順次增大RecNumber參數的值,直到函數返回SQL_NO_DATA,以得到所有的錯誤描述 |