1.SQLAllocHandle创建odbc句柄
SQLRETURN SQLAllocHandle(
SQLSMALLINT HandleType,//HandleType的取值可以为SQL_HANDLE_ENV(申请环境句柄)、SQL_HANDLE_DBC(申请数据库连接句柄)、 SQL_HANDLE_STMT(申请SQL语句句柄)
SQLHANDLE InputHandle,//输入句柄
SQLHANDLE* OutputHandlePtr//输出句柄,即第一个参数指定的需要申请的句柄
);
创建环境句柄后务必调用:SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER)//将odbc设置成为版本3,否则某些odbc api函数不能被支持。
2.ODBC API 函数的返回值
返回值定义:SQLRETURN
成功是返回值:SQL_SUCCESS、SQL_SUCCESS_WITH_INFO(表明执行成功但带有一定错误信息)
失败时返回值:SQL_ERROR
3.SQLConnect连接数据库
SQLRETURN SQLConnect(
SQLHDBC hdbc,//数据库连接句柄
SQLCHAR* ServerName,//为ODBC的DSN名
SQLSMALLINT length_ServerName,//ServerName数据的长度
SQLCHAR* UserName,//数据库用户名
SQLSMALLINT length_UserName,//UserName数据的长度
SQLCHAR* PassWord,//数据库用户密码
SQLSMALLINT length_PassWord//PassWord数据的长度
);
关于以上三个参数的长度可以直接指定,也可以定为SQL_NTS表明参数是以NULL字符结尾
附:示例代码
#include<stdio.h>
#include<windows.h>
#include<sql.h>
#include<sqlext.h>
#include<sqltypes.h>
int main(){
SQLRETURN ret;
SQLHENV henv;//SQLHANDLE henv
SQLHDBC hdbc;//SQLHANDLE hdbc
SQLHSTMT hstmt;//SQLHANDLE hstmt
ret=SQLAllocHandle(SQL_HANDLE_ENV,NULL,&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*)"phonesql",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"112358",SQL_NTS);//连接数据库
ret=SQLAllocHandle(SQL_HANDLE_STMT,hdbc,&hstmt);//申请SQL语句句柄
if(ret==SQL_SUCCESS || ret==SQL_SUCCESS_WITH_INFO)
printf("success!\n");
else printf("error!\n");
return 0;
}