Visual C++中的ODBC编程实例(2)
对于GetDefaultSQL()函数返回的表名,对应的缺省操作是SELECT语句,即:
SELECT *FROM BasicData,MainSize
在查询过程中,也可以利用CRecordSet的成员变量m_strFilter和m_strSort来执行条件查询和结果排序。m_strFilter为过滤字符串,存放着SQL语句中WHERE后的条件串;m_strSort为排序字符串,存放着SQL语句中ORDER BY后的字符串。如:
Super_ESSet.m_strFilter=″TYPE=‘电动机’″;
Super_ESSet.m_strSort=″VOLTAGE″;
Super_ESSet.Requery();
对应的SQL语句为:
SELECT *FROM BasicData,MainSize
WHERE TYPE=‘电动机’
ORDER BY VOLTAGE
除了直接赋值给m_strFilter以外,还可以使用参数化。利用参数化可以更直观、更方便地完成条件查询任务。使用参数化的步骤如下:
S声明参变量:
CString p1;
float p2;
S在构造函数中初始化参变量:
p1=_T(″″);
p2=0.0f;
m_nParams=2;
S将参变量与对应列绑定:
pFX->SetFieldType(CFieldExchange::param)
RFX_Text(pFX,_T(″P1″),p1);
RFX_Single(pFX,_T(″P2″),p2);
完成以上步骤后就可以利用参变量进行条件查询:
m_pSet->m_strFilter=″TYPE=? AND VOLTAGE=?″;m_pSet->p1=″电动机″;
m_pSet->p2=60.0;
m_pSet->Requery();
参变量的值按绑定的顺序替换查询字串中的“?”通配符。
如果查询的结果是多条记录,可以用CRecordSet类的函数Move()、MoveNext()、MovePrev()、MoveFirst()和MoveLast()来移动光标。
2.增加记录
增加记录使用AddNew()函数,要求数据库必须是以允许增加的方式打开:
m_pSet->AddNew(); //在表的末尾增加新记录
m_pSet->SetFieldNull(&(m_pSet->m_type), FALSE);
m_pSet->m_type=″电动机″;
……
//输入新的字段值
m_pSet->Update();
//将新记录存入数据库
m_pSet->Requery();
//重建记录集