如何调用SQL语句时,根据变量值进行检索并将结果存入另一变量
编号:QA002599
建立日期: 2000年2月20日 最后修改日期:2000年2月20日
所属类别:
狄明磊:
编程工具: Visual C++ 6.0
操作系统: Windows 98
我是一名VC的初学者。我编了一个程序,启动时显示一个对话框让用户输入名称和密码,然后通过名称来检索数据库,判断密码是否正确,如正确,则将用户级别检索出来存入一个变量中。我查了ExecuteSql()好象无法将检索的结果存入一个变量中。请问如何实现?即:如何在VC中直接调用SQL语句根据我所给的变量进行检索并将查询结果存入另一个变量中??
如: select jb into :jb from member
where Name=:name;
回答:
和许多数据库系统不同,VC一般不能将查询结果传递给一个变量,而是通过建立数据集来获得结果。凡是SELECT语句都可以产生一个数据集(下面假设你使用的是DAO,RDO和ADO类似)。
例如,你可以使用
CDaoDatabase db;
db.Open(_T("d:\\scores.mdb"));
CDaoRecordset rs(&db);
rs.Open(dbOpenDynaset,
_T("SELECT [Student Name], AVG([Test Score]) AS AvgScore "
"FROM Scores GROUP BY [Student Name]"));
while (!rs.IsEOF())
{
COleVariant varName;
COleVariant varAvg;
varName = rs.GetFieldValue(_T("student name"));
varAvg = rs.GetFieldValue(_T("AvgScore"));
// You know that the return values are BSTR and VT_R8 types.
// if you didn't know, you would have to do some checking
// here. Look at the vt member of the COleVariant to see what
// type the data is.
// Do something with the data. This sample prints the
// information to the output window of the debugger.
TRACE(_T("%s\n%f\n"), V_BSTRT(&varName), V_R8(&varAvg));
rs.MoveNext();
}
rs.Close();
db.Close();
这样的语句先建立数据库集,然后访问该数据集的记录。
而对于你说的根据你给的变量值建立查询,可以使用下面的语法:
rs.Open(dbOpenDynaset,
_T(" select jb from member"
"where Name=" + m_sName));
也可以使用参数化SQL查询。
此问题由李海回答。
| |
|
|
| |
|
|