ODBC 数据类型和API(VC)
目录
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,以得到所有的错误描述 |