📄 s14_01.cpp
字号:
// S14_01.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#define MAXNAME 256
int _tmain(int argc, _TCHAR* argv[])
{
RETCODE retcode;
char szCustID[6];
char szCompName[41];
char szLinkMan[31];
int recNum = 0;
SQLHENV henv = SQL_NULL_HENV;
SQLHDBC hdbc1 = SQL_NULL_HDBC;
SQLHSTMT hstmt1 = SQL_NULL_HSTMT;
UCHAR szDSN[SQL_MAX_DSN_LENGTH+1] = "CNorthwind",
szUID[MAXNAME] = "Admin",
szAuthStr[MAXNAME] = "\0";
SDWORD sdODataLength;
// 分配ODBC环境并保存该环境句柄.
retcode = SQLAllocHandle (SQL_HANDLE_ENV, NULL, &henv);
// 通知ODBC, 这是一个ODBC 3.0应用程序.
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,
(SQLPOINTER)SQL_OV_ODBC3,
SQL_IS_INTEGER);
// 分配一个ODBC连接句柄, 并建立连接.
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc1);
retcode = SQLConnect(hdbc1, szDSN, (SWORD)strlen((LPCTSTR)szDSN),
szUID, (SWORD)strlen((LPCTSTR)szUID),
szAuthStr, (SWORD)strlen((LPCTSTR)szAuthStr));
// 连接失败, 可以调用SQLGetDiagRec来查找错误原因.
if ( (retcode != SQL_SUCCESS) &&
(retcode != SQL_SUCCESS_WITH_INFO) )
{
printf("未能成功连接到数据源!\n");
}
// 连接成功.
else
{
printf("成功连接到数据源!\n");
// 分配语句(SQL语句)句柄, 并进行ODBC处理.
retcode = SQLAllocStmt(hdbc1, &hstmt1);
if( retcode == SQL_SUCCESS )
{
// 执行SQL查询语句.
retcode = SQLExecDirect(hstmt1,
(unsigned char*)"SELECT * FROM 客户",
SQL_NTS);
if( retcode ==SQL_SUCCESS )
{
recNum = 0;
for( retcode = SQLFetch(hstmt1); retcode == SQL_SUCCESS;
retcode = SQLFetch(hstmt1) )
{
recNum++;
// 获取指定列的记录数据.
SQLGetData(hstmt1, 1, SQL_C_CHAR, szCustID, 6, &sdODataLength);
SQLGetData(hstmt1, 2, SQL_C_CHAR, szCompName, 41, &sdODataLength);
SQLGetData(hstmt1, 3, SQL_C_CHAR, szLinkMan, 31, &sdODataLength);
printf("记录No.%03d: 客户ID=%5s; 公司名称=%-20s; 联系人姓名=%-10s\n",
recNum, szCustID, szCompName, szLinkMan);
}
}
SQLFreeStmt(hstmt1, SQL_DROP);
}
}
// 清除.
SQLDisconnect(hdbc1);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -