在使用CRecordset::Open()时,函数的第2个参数是一个SQL语句,通过它可以实现简单的查询,如m_pSet->Open(AFX_DB_USE_DEFAULT_TYPE,"select * from student where sno='981636'",查询结果得到学号sno=981636的记录,这个学号是在SQL语句中确定的,也就是在执行前就定下来的,那么如果我需要查询的学生的学号是在程序执行时才确定的(比如由用户在一个编辑框中输入),也就是使得查询条件参数化,我该如何写这个SQL语句呢?
我知道这个问题对有数据库编程经历的人来说很简单,但我刚接触,所以还是请大家帮帮忙回答我一下。
另外,标准SQL语句不仅仅有查询纪录集的能力,它还可以作统计,作数据库等的创建,又丰富的函数,如max,count,sum等,这些在VC中都如何用呢?我想问的是细节,也就是如何写代码,比如,我想统计学生总人数,我知道标准SQL语句这样写:select count(distinct sno) from student,那么这个得到的结果(一个整数值,学生人数)返回在哪里呢?我的意思是如何一VC代码(一个整型变量)获得这个返回的值呢?
如果谁又简单的数据库例子代码(用ODBC连接,使用CDAtabase,CRecordset),实现如:查询,添加,删除,统计等简单功能,请发给我:[email protected],谢谢!
我知道这个问题对有数据库编程经历的人来说很简单,但我刚接触,所以还是请大家帮帮忙回答我一下。
另外,标准SQL语句不仅仅有查询纪录集的能力,它还可以作统计,作数据库等的创建,又丰富的函数,如max,count,sum等,这些在VC中都如何用呢?我想问的是细节,也就是如何写代码,比如,我想统计学生总人数,我知道标准SQL语句这样写:select count(distinct sno) from student,那么这个得到的结果(一个整数值,学生人数)返回在哪里呢?我的意思是如何一VC代码(一个整型变量)获得这个返回的值呢?
如果谁又简单的数据库例子代码(用ODBC连接,使用CDAtabase,CRecordset),实现如:查询,添加,删除,统计等简单功能,请发给我:[email protected],谢谢!
CString strNum;
myEdit.GetWindowText(strNum);
sql.Format("select * from student where sno='%s'", strNum);
m_pSet->Open(AFX_DB_USE_DEFAULT_TYPE, sql);2、MFC提供的那些玩意不能直接处理如 count 等有返回值的SQL语句,可用ADO
3、我讨厌VC
你的sql字符串先拼好,在将字符串变量当参数就可以了。
第二个问题
你查msdn的CRecordset。按查询的字段顺序取值,返回值是variant型。
2、在构造函数中初始化改变量并设置参数个数,
sNo_Param = _T("");
m_nParam = 1;(此处只有一个参数)
3、在DoFieldExchange()函数中添加以下几行:
pFX->SetFieldType(CFieldExchange::param);
RFX->Text(pFX, _T("[sno]", sNo_Param);
4、使用:....
pMyRecordSet->m_strFilter = "sno = ?";
pMyRecordSet->sNo_Param = #在此处设置你想要查询的学号#
if(pMyRecordSet->Open())
{
....
你能将“按查询的字段顺序取值,返回值是variant型。”说详细点吗?谢谢!