在使用微软提供的CDatabase和CRecordset访问数据库时遇到了2个问题
1、总是弹出数据库登陆界面,如下图,好难受
2、查询数据库是出现无效的游标,如图:
第一个问题是因为使用Open(“数据源名称”)连接数据库,所以才弹出数据库登录界面。代码如下:
CDatabase l_dbConnect;
if ( FALSE==l_dbConnect.Open("TEST") )
{
MessageBox("连接数据库失败!");
}
可以使用提供账号、密码的方式登录。代码如下:
l_dbConnect.Open(NULL, FALSE, FALSE, "ODBC;DSN=TEST;UID=sa;PWD=123456789")
第二个问题是因为执行完select语句之后,没有判断游标的位置就使用GetFieldValue()取值。
CRecordset提供了2个成员函数IsBOF,IsEOF(其中B是before的缩写,E是end的缩写),IsBOF用法如下:
/* BOOL CRecordset::IsBOF( ) const;IsEOF就是最后一条记录之后,如果游标在这个位置,就到底了,也不要取数据了。
Returns nonzero if the recordset has been positioned before the first record,There is no current record
游标处于第一条记录之前(就是没有取到数据)*/
if(rsCustSet.IsBOF())
{
return; // The recordset is empty
}
推荐一遍关于CDatabase和CRecordset使用的详细文章 http://blog.csdn.net/elcoteq983/article/details/7000755