ODBC 数据类型和API(VC)

目录

ODBC 数据类型
API 函数


ODBC 数据类型

ODBC SQL 数据类型

展开显示
复制代码
ODBC SQL 数据类型
SQL类型标识SQL 92类型标识类型描述
SQL_CHARCHAR(n)定长字符串,其长度为n
SQL_VARCHARVARCHAR(n)变长字符串,最大长度为n
SQL_LONGVARCHARLONG VARCHAR变长字符串,最大长度取决于数据源
SQL_WCHARNCHAR(n)定长Unicode字符串,其长度为n
SQL_WVARCHARVARNCHAR(n)变长Unicode字符串,最大长度为n
SQL_WLONGVARCHARLONG WVARCHAR变长Unicode字符串,最大长度取决于数据源
SQL_DECIMALDECIMAL(p,s)精度为p,小数位为s的有符号,精度数值型,其最大精度由驱动程序定义的.(1<=p<=15;s<=p)
SQL_NUMERICNUMERIC(p,s)精度为p,小数位为s的有符号,精度数值型,其最大精度由驱动程序定义的.(1<=p<=15;s<=p)[4]
SQL_SMALLINTSMALLINT精度为p,小数位为0的精确数值型
  • 有符号:-32, 768<= n <=32, 767
  • 无符号:0<=n<=65,535
SQL_INTEGERINTEGER进度为10,小数位为0的精度数值型
  • 有符号:-231<=n<=231-1
  • 无符号:0<=n<=232-1
SQL_REALREAL二进制精度为24的有符号近似数值型
  • 0或绝对值从10-38到1038
SQL_FLOATFLOAT二进制精度至少为p的有符号近似数值型(最大精度由驱动程序定义)
SQL_DOUBLEDOUBLE PRECISON二进制精度为53的有符号近似数值型
  • 0或绝对值从10-308到10308
SQL_BITBIT一位二进制数
SQL_TINYINTTINYINT精度为3,小数位为0的精度数值型
  • l有符号-128<=n<=127
  • l无符号0<=n<=255
SQL_BIGINTBIGINT精度为19(有符号)或精度为20(无符号)的精度数值型
  • 有符号: -263<=n<=263-1
  • 无符号: 0<=n<=264-1
SQL_BINARYBINARY(n)长度为n的定长二进制数据
SQL_VARBINARYVARBINARY(n)最大长度为n的变长二进制数据,最大长度有用户定义
SQL_LONGVARBINARYLONG VARBINARY变长二进制类型,最大长度依赖数据源
SQL_TYPE_DATEDATE包含年,月,日码位并符合格林威治日期
SQL_TYPE_TIMETIME(p)包含小时,分钟和秒码位,小时有效值为00到23,分钟有效值为00到59,秒有效值为00到59,p表示秒的精度
SQL_TYPE_TIMESTAMPTIMESTAMP,DATETIME包含年,月,日,小时,分钟和秒码位,具体定语与DATA和TIME一致
SQL_INTERVAL_MONTHINTERVAL MONTH(p)两日期间月差数,p是其差数值的精度
SQL_INTERVAL_YEARINTERVAL YEAR(p)两日期间年差数,p是其差数值的精度
SQL_INTERVAL_YERA_TO_MONTHINTERVAL YEAR(p) TO MONTH两日期间年月差数,p是其差数的精度
SQL_INTERVAL_DAYINTERVAL DAY(p) 两日期间日的差数,p是其差数的精度
SQL_INTERVAL_HOURINTERVAL HOUR(p)两日期/时间间小时差数,p是其差数精度
SQL_INTERVAL_MINUTEINTERVAL MINUTE(p)两日期/时间间分钟差数,p是其差数精度
SQL_INTERVAL_SECONDINTERVAL SECOND(p,q)两日期/时间间秒差数,p是其差数精度,q是其差值的秒精度
SQL_INTERVAL_DAY_TO_HOURINTERVAL DAY(p) TO HOUR两日期/时间间日和小时差数,p是其差数精度
SQL_INTERVAL_DAY_TO_MINUTEINTERVAL DAY(p) TO MINUTE两日期/时间间日,小时和分钟差数,p是其差数精度
SQL_INTERVAL_DAY_TO_SECONDINTERVAL DAY(p) TO SECOND(q)两日期/时间间日,小时,分钟和秒差数,p是其差数精度,q是其差值的秒精度
SQL_INTERVAL_HOUR_TO_MINUTEINTERVAL HOUR(p) TO MINUTE两日期/时间小时和分钟差,p是其差数精度
SQL_INTERVAL_HOUR_TO_SECONDINTERVAL HOUR(p) TO SECOND(q)两日期/时间小时,分钟和秒差,p是其差数精度,q是其差值的秒精度
SQL_INTERVAL_MINUTE_TO_SECONDINTERVAL MINUTE(p) TO SECOND (q)两日期/时间间分钟和秒差,p是其差数精度,q是其差值的秒精度
SQL_GUIDGUID固定长度的全局唯一标识

ODBC C 数据类型  

展开显示
复制代码
ODBC C 数据类型
C语言数据类型名称ODBC 数据类型定义C语言实际类型
SQL_C_CHARSQLCHAR *unsigned char *
SQL_C_SSHORTSQLSMALLINTshort int
SQL_C_USHORTSQLUSMALLINTunsigned short int
SQL_C_SLONGSQLINTEGERlong int
SQL_C_ULONGSQLUINTEGERunsigned long int
SQL_C_FLOATSQLREALfloat
SQL_C_DOUBLESQLDOUBLE,SQLFLOATdouble
SQL_C_BITSQLCHARunsigned char
SQL_C_STINYINTSQLSCHARsigned char
SQL_C_UTINYINTSQLCHARunsigned char
SQL_C_SBIGINTSQLBIGINT_int64
SQL_C_UBIGINTSQLUBIGINTunsigned _int64
SQL_C_BINARYSQLCHAR *unsigned char *
SQL_C_BOOKMARKBOOKMARKunsigned long int
SQL_C_VARBOOKMARKSQLCHAR *unsigned char *
SQL_C_TYPE_DATESQL_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 输入参数,指定数据源操作类型
  • ODBC_ADD_DSN 添加新的用户数据源
  • ODBC_CONFIG_DSN 配置已存在的用户数据源
  • ODBC_REMOVE_DSN 删除已存在的用户数据源
  • ODBC_ADD_SYS_DSN 添加新的系统数据源
  • ODBC_CONFIG_SYS_DSN 配置已存在的系统数据源
  • ODBC_REMOVE_SYS_DSN 删除已存在的系统数据源
  • ODBC_REMOVE_DEFAULT_DSN 删除缺省数据源
lpszDriver 输入参数,指定数据库驱动程序描述
lpszAttributes

输入参数,包含配置数据源所必须的一组关键字-值的列表

展开显示
复制代码
关键字 属性值描述
DSN 数据源名称
FILEDSN 文件数据源名称
DRIVER 数据驱动的描述.如SQL Server,ORACLE等
UID 用户ID
PWD UID对应的口令,如果没有口令,也可以为空字符串(PWD = ;)
SAVEFILE 保存维持当前成功连接的关键字属性值的.dsn文件名称
DATABASE 数据库名称
 

句柄函数

展开显示
复制代码
SQLAllocHandle 函数原型 SQLRETURN SQLAllocHandle( SQL SMALLINT HandleType,
SQLHANDLE InputHandle,
SQLHANDLE *OutputHandlePtr );
参数 HandleType 输入参数,指定分配句柄类型
  • SQL_HANDLE_ENV 分配的是环境句柄
  • SQL_HANDLE_DBC 分配的是数据库连接句柄
  • SQL_HANDLE_STMT 分配的是语句句柄
  • SQL_HANDLE_DESC 分配的是描述句柄
InputHandle

输入参数,指定分配新句柄的相关联的句柄具体值与HandleType相对应

展开显示
复制代码
HandleType InputHandle
SQL_HANDLE_ENV SQL_NULL_HANDLE
SQL_HANDLE_DBC 连接所属的环境句柄
SQL_HANDLE_STMT 语句所属的连接句柄
SQL_HANDLE_DESC 描述所属的句柄连接
 
OutputHandlePtr 输出参数,返回分配的句柄
返回值
  • 若返回SQL_SUCCESS 表示成功执行
  • 若返回SQL_SUCCESS_WITH_INFO 表示成功执行并有返回信息
  • 若返回SQL_INVALIB_HANDLE 表示无效句柄
SQLFreeHandle 函数原型 SQLRETURN SQLFreeHandle( SQLSMALLINT HandleType,SQLHANDLE Handle );
参数 HandleType 要分配的句柄类型.UltraLite 支持以下句柄类型:
  • SQL_HANDLE_ENV
  • SQL_HANDLE_DBC
  • SQL_HANDLE_STMT
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

输入参数,指定函数执行的标志

  • SQL_DRIVER_PROMPT 如果连接字符串未包括 Driver,DSN,FileDSN 关键字,系统会自动弹出 Data Source 窗口
  • SQL_DRIVER_COMPLETE 和 SQL_DRIVER_COMPLETE_REQUIRED 如果指定数据源,则应用程序使用此数据源,否则,系统弹出 Data Source 窗口
  • SQL_DRIVER_NOPROMPT使用指定的数据源,不弹出Data Source窗口
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对应的取值

展开显示
复制代码
Attribute ValuePtr 作用
SQL_ATTR_ASYNC_ENABLE 整数,取值为:SQL_ASYNC_ENABLE_OFF,SQL_ASYNC_ENABLE_ON 是否使用异步执行功能
SQL_ATTR_QUERY_TIMEOUT 设置一个合法的整数 SQL语句执行时的超时秒数,设置为0表示无超时
SQL_ATTR_CURSOR_TYPE 整数,取值为:SQL_CURSOR_FORWARD_ONLY, SQL_CURSOR_STATIC, SQL_CURSOR_DYNAMIC, SQL_CURSOR_KEYSET_DRIVEN 设置光标的类型
 

编目函数

展开显示
复制代码
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

输入参数,指定行标识符最小范围,其取值参考表为

展开显示
复制代码
Scope取值 含义
SQL_SCOPE_CURROW 仅当定位于改行时,
该行标识符有效
SQL_SCOPE_TRANSACTION 在当前事务期间,
改行标识符有效
SQL_SCOPE_SESSION 在回话(跨事务边界)期间,
该行标识符有效
 
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

表明滚动的方式,允许的值如下

展开显示
复制代码
FetchOrientation 含义
SQL_FETCH_NEXT 滚动到下一行,这时候调用相当与SQLFetch,参数FetchOffset将被忽略
SQL_FETCH_PRIOR 滚动到上一行,参数FetchOffset将被忽略
SQL_FETCH_FIRST 滚动到第一行,参数FetchOffset将被忽略
SQL_FETCH_LAST 滚动到最后一行,参数FetchOffset将被忽略
SQL_FETCH_ABSOLUTE 滚动到参数FetchOffset指定的绝对行
SQL_FETCH_RELATIVE 由当前位置滚动到参数FetchOffset指定的相对行,FetchOffset大于0表示向前滚动,FetchOffset小于0表示向后滚动
 
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 输入参数,
指定分配句柄类型
  • SQL_HANDLE_ENV 分配的是环境句柄
  • SQL_HANDLE_DBC 分配的是数据库连接句柄
  • SQL_HANDLE_STMT 分配的是语句句柄
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,以得到所有的错误描述

 

 

转载于:https://www.cnblogs.com/kzang/archive/2012/11/29/2794815.html

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值