ODBC访问数据库

时间:2021-01-03 04:34:57

在使用微软提供的CDatabase和CRecordset访问数据库时遇到了2个问题

1、总是弹出数据库登陆界面,如下图,好难受

ODBC访问数据库

2、查询数据库是出现无效的游标,如图:

ODBC访问数据库

第一个问题是因为使用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;
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
}
IsEOF就是最后一条记录之后,如果游标在这个位置,就到底了,也不要取数据了。

推荐一遍关于CDatabase和CRecordset使用的详细文章 http://blog.csdn.net/elcoteq983/article/details/7000755