扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:isec 来源:CSDN 2007年11月9日
关键字:
{ SQLHENV hEnv = SQL_NULL_ENV; // 环境句柄 SQLHDBC hDbc = SQL_NULL_HDBC; // 连接句柄 SQLHSTMT hStmt = SQL_NULL_HSTMT; // 语句句柄 SQLCHAR connStr[255] = "Driver={SQL Server};SERVER=localhost;UID=你的用户名;PWD=你的密码;DATABASE=Railway;"; // 分配环境句柄 SQLAllocHandle(SQL_HANDLE_ENV, NULL, &hEnv); // 设置连接环境,ODBC版本设为3.x SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER); // 根据环境分配连接句柄 SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc); // 建立数据库连接 SQLDriverConnect(hDbc, NULL, connStr, SQL_NTS, NULL, 255, NULL, SQL_DRIVER_NOPROMPT); // 根据连接分配语句句柄 SQLAllocHandle(SQL_HANDLE_STMT, hDbc, &hStmt); // 定义查询语句query,别忘记#include <tchar.h> TCHAR query[255] = "select Routes.TrainID, AllStations from Routes, Trains where Routes.TrainID=Trains.TrainID and AllStations like '%"; _tcscat(query, (TCHAR*)pbStart); _tcscat(query, "%"); _tcscat(query, (TCHAR*)pbEnd); _tcscat(query, "%'"); // 现在,query="select Routes…… like '%起点站%终点站%'",我们运行此查询 SQLExecDirect(hStmt, (SQLCHAR*)query, SQL_NTS); // 获得查询所得的行数 UINT uiRowsCount; //结果集中的行数 SQLSetStmtAttr(hStmt, SQL_ATTR_ROWS_FETCHED_PTR), (void*)&uiRowsCount, sizeof(SQLINTEGER)); // 初始化结果集数组,包括两个:TrainID和AllStations int *piTrainID = (int*)::malloc(uiRowsCount * sizeof(int)); PCHAR *ppcStations = (PCHAR*)::malloc(uiRowsCount * sizeof(PCHAR)); // 因为结果集中第一列,即TrainID为整型,长度不变,故可以直接绑定 SQLBindCol(hStmt, 1, SQL_INTEGER, (SQLPOINTER)piTrainID, sizeof(int), NULL); // 取出第二列的数据,因为其长度不定,故必须先获得长度 SQLINTEGER lColLen; // 字符串的列,即AllStations长度 UINT nRow = 0; // 行标 while (SQLFetch(hStmt) == SQL_SUCCESS_WITH_INFO) //取出一行 { // 获得长度 SQLGetData(hStmt, 2, SQL_CHAR, NULL, 0, &lColLen); // 根据长度为第二列的数据分配空间 ppcStation[nRow] = ::malloc(lColLen); // 获得数据 SQLGetData(hStmt, 2, SQL_CHAR, ppcStation[nRow], lColLen, &lColLen); // 行标随行的Fetch递增 ++nRow; } // 现在,我们就取出了所有TrainID和AllStations // 关闭数据库连接,释放资源 SQLFreeHandle(SQL_HANDLE_STMT, hStmt); SQLDisConnect(hDbc); SQLFreeHandle(SQL_HANDLE_DBC, hDbc); SQLFreeHandle(SQL_HANDLE_ENV, hEnv); } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者