1.ODBC定义
ODBC(Open Database Connectivity)开放式数据库互连是Microsoft提出的数据库访问接口标准,提供了一组对数据库访问的标准API。
Application<-->ODBC manager<-->ODBC Drivers<-->Data Sources
2.ODBC所需头文件
#include<windows.h>//否则sqltypes.h(137) : error C2146: syntax error : missing ';' before identifier 'SQLHWND'
#include<sql.h>
#include<sqlext.h>
#include<sqltypes.h>
#include<sqlucode.h>
#include<odbcss.h>
3.数据类型定义
C语言数据类型<——>ODBC数据类型<——>数据库SQL语言数据类型
由于ODBC的驱动程序调用自己的DBMS数据库访问接口时就会将ODBC数据类型转化为数据库SQL语言数据类型,所以我们只需了解C语言数据类型和ODBC数据类型的转换关系。在进行ODBC开发过程中不要使用C语言实际类型而应该使用ODBC数据类型。
表一
ODBC数据类型名称 |
SQL语言数据类型名称 |
SQL_CHAR |
CHAR(n) |
SQL_VARCHAR |
VARCHAR(n) |
SQL_LONGVARCHAR |
LONG VARCHAR |
SQL_WCHAR |
WCHAR(n) |
SQL_WVARCHAR |
VARWCHAR(n) |
SQL_WLONGVARCHAR |
LONGWVARCHAR |
SQL_DECIMAL |
DECIMAL(p,s) |
SQL_NUMERIC |
NUMERIC(p,s) |
SQL_SMALLINT |
SMALLINT |
SQL_INTEGER |
INTEGER |
SQL_REAL |
REAL |
SQL_FLOAT |
FLOAT(p) |
SQL_DOUBLE |
DOUBLE PRECISION |
SQL_BIT |
BIT |
SQL_TINYINT |
TINYINT |
SQL_BIGINT |
BIGINT |
SQL_BINARY |
BINARY(n) |
SQL_VARBINARY |
VARBINARY(n) |
SQL_LONGVARBINARY |
LONG VARBINARY |
SQL_TYPE_DATE |
DATE |
SQL_TYPE_TIME |
TIME(p) |
SQL_TYPE_TIMESTAMP |
TIMESTAMP(p) |
SQL_GUID |
GUID |
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 { |
SQL_C_TYPE_TIME |
SQL_TIME_STRUCT |
struct tagTIME_STRUCT { |
SQL_C_TYPE_TIMESTAMP |
SQL_TIMESTAMP_STRUCT |
struct tagTIMESTAMP_STRUCT { |
SQL_C_NUMERIC |
SQL_NUMERIC_STRUCT |
struct tagSQL_NUMERIC_STRUCT { |
SQL_C_GUID |
SQLGUID |
struct tagSQLGUID { |
环境句柄
数据库连接句柄
SQL语句句柄
在使用ODBC时必须先申请环境句柄,然后在环境句柄的基础上创建数据库连接句柄,最后在数据连接的基础上创建SQL语句句柄,执行SQL语句。
5.建立ODBC DSN
DSN(Data Source Name)数据源名是用于指定ODBC与相关的驱动程序相对应的一个入口,所有的DSN信息由系统管理。
控制面板-->管理工具-->数据源(ODBC):
DSN分三类:
用户DSN:对当前用户可见,只能够用于当前计算机
系统DSN:对当前系统上所有用户可见,包括NT中的服务器。系统DSN告诉应用程序如何与数据库相连和交互,但它不包含数据库所需的任何数据
文件DSN:DSN信息存放在文件中,对能够访问到该文件的用户可见
用户DSN-->添加-->创建新数据源-->选择SQL Server驱动程序:
下一步-->登录方式:
默认数据库master:
设置语言、数字、时间、日志等:
测试数据源:
测试结果:
测试成功后: