1. SQLAllocHandle 创建ODBC句柄
SQLRETURN SQLAllocHandle(
SQlSMALLINT HandleType,
SQLHANDLE InputHandle,
SQLHANDLE* OutputHandlePtr
);
第一个参数HandleType的取值为:
SQL_HANDLE_ENV:申请环境句柄
SQL_HANDLE_DBC:申请数据库连接句柄
SQL_HANDLE_STMT:申请SQL语句句柄,每次执行SQL语句都要申请语句句柄,并在执行完之后释放。
第二个参数InputHandle为输入句柄
第三个参数为输出句柄
SQLAllocHandle(SQL_HANDLE_ENV,NULL,&hEnv);
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(SQLPOINTER) SQL_OV_ODBC3, SQL_IS_INTEGER);
SQLAllocHandle(SQL_HANDLE_DBC,hEnv,&hDBC);
SQLAllocHandle(SQL_HANDLE_STMT,hDBC,&hSTMT);
2.SQLGetDiagRec(
SQLSMALLINT HandleType,
SQLHANDLE Handle,
SQLSMALLINT RecNumber,
SQLCHAR * Sqlstate,
SQLINTEGER * NativeErrorPtr,
SQLCHAR * MessageText,
SQLSMALLINT BufferLength,
SQLSMALLINT * TextLengthPtr);
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,以 得到所有的错误描述。
3. SQLConnect 连接数据库
SQLRETURN SQLConnect(
SQLHDBC ConnectionHandle,
SQLCHAR * ServerName,
SQLSMALLINT NameLength1,
SQLCHAR * UserName,
SQLSMALLINT NameLength2,
SQLCHAR * Authentication,
SQLSMALLINT NameLength3);
ConnectionHanlde:为DBC句柄,也就是前面提到到利用:
SQLAllocHandle(SQL_HANDLE_DBC,hEnv,&hDBC);申请的句柄。
ServerName:为ODBC的DSN名称。
NameLength1:指明参数ServerName数据的长度。
UserName:数据库用户名。
NameLength2:指明参数UserName数据的长度。
Authentication:数据库用户密码。
NameLength3:指明参数Authentication数据的长度。
关于ServerName,UserName,Authentication参数长度可以直接指定也可以指定为SQL_NTS表明参数是以NULL字符结尾。
4. SQLExecDirect 直接执行SQL语句SQLRETURN SQLExecDirect(
SQLHSTMT StatementHandle,
SQLCHAR * StatementText,
SQLINTEGER TextLength);
StatementHandle:SQL语句句柄,也就是前面提到的利用:
SQLAllocHandle(SQL_HANDLE_STMT,hDBC,&hSTMT);申请的句柄。
StatementText:SQL语句。
TextLength:参数StatementText的长度,可以使用SQL_NTS表示字符串以NULL字符结尾。
如果函数执行成功,你将会得到一个结果集,否则将返回错误信息。
SQLExecDirect函数除可以执行 Select 语句外,还可以执行Insert,Update,Delete 语句,在执行修改SQL语句后可以利用SQLRowCount 函数来得到被更新的记录的数量。
5. SQLGetData 得到光标处的某列的值