怎么让用户输入查询条件,这是我的查询过程
SQLHSTMT hStmt= NULL;
ret = SQLAllocHandle(SQL_HANDLE_STMT, hDbc, &hStmt);
//SQL查询语句
SQLTCHAR sql[] = _T("SELECT * FROM Teacher ");
//执行SQL语句
ret = SQLExecDirect(hStmt, sql, SQL_NTS); //SQL_NTS自动计算sql语句的长度
if ((ret == SQL_SUCCESS) || (ret == SQL_SUCCESS_WITH_INFO))
{
//查询之后,所有数据放到了一块缓冲区,我们需要把他分离出来
TCHAR id[6] = { 0 };
TCHAR name[32] = { 0 };
TCHAR sex[6] = {0};
int age = 0 ;
TCHAR xibu[10] = { 0 };
//绑定字段
SQLLEN len = SQL_NTS;
SQLBindCol(hStmt, 1, SQL_C_WCHAR, id, sizeof(id), &len);
SQLBindCol(hStmt, 2, /*SQL_C_CHAR*/SQL_C_WCHAR, name, sizeof(name), &len);
SQLBindCol(hStmt, 3, SQL_C_WCHAR, sex, sizeof(sex),&len );
SQLBindCol(hStmt, 4, SQL_C_LONG, &age, sizeof(age), 0);
SQLBindCol(hStmt, 5, SQL_C_WCHAR, xibu, sizeof(xibu), &len);
//逐行遍历,获取数据
ret = SQLFetch(hStmt);
while (ret != SQL_NO_DATA)
{
wcout << id << "\t" << name << "\t" <<sex<<"\t" <<age <<"\t"<<xibu<< endl;
//每次清除一下上行的旧数据,保证下次获取的数据干净
ZeroMemory(id, sizeof(id));
ZeroMemory(name, sizeof(name));
ZeroMemory(sex, sizeof(sex));
age = 0;
ZeroMemory(xibu, sizeof(xibu));
//获取下一行缓冲区的数据填充到id,name,age
ret = SQLFetch(hStmt);
}
SQLLEN n = 0;
ret = SQLRowCount(hStmt, &n);//查询被影响的行数(适用于SELECT ,INSERT,UPDATE,DELETE操作)
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)
{
_tprintf(_T("查询%d行数据成功!\n"), n);
}
}
else if (ret == SQL_ERROR)
{
SQLTCHAR state[128] = { 0 };
SQLTCHAR msg[128] = { 0 };
//获取错误信息,注意填写语句句柄
ret = SQLError(hEnv, hDbc, hStmt, state, NULL, msg, sizeof(msg), NULL);
wcout << state << " " << msg << endl;
}
//释放语句句柄
if (hStmt)
{
ret = SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
}