热情软件屋

 

如何调用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查询。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio