OOL Cconnect::ODBCConnect(CString strDBFile)
{
CString strConnect;
strConnect.Format(_T("ODBC;DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)};UID=;PWD=;DBQ=%s"), strDBFile); CDatabase db;
if(db.Open(NULL, FALSE, FALSE,strConnect))
{
//连接数据库成功
CRecordset rs(&db);
CString strSql;
strSql = _T("SELECT * FROM info"); //SQL语句
rs.Open(CRecordset::snapshot, strSql); //执行Sql语句(可添加 删除 查询等)
// rs.Open(AFX_DAO_USE_DEFAULT_TYPE,strSql,NULL);
if(rs.IsOpen())
{
CDBVariant variant;
rs.MoveFirst();
while(!rs.IsEOF())
{
//读取记录
rs.GetFieldValue(_T("姓名"), variant);
rs.MoveNext();
}
rs.Close();
} db.Close();
return TRUE;
} return FALSE;
编译通过,运行提示:debug error。 调试时,提示在调用 SQLFetchScroll/SQLExtendedFetch 之前,没有列被绑定
State:SL009,Native:0,Origin:[Microsoft][ODBC 游标库],这个问题该怎么解决呢?
{
CString strConnect;
strConnect.Format(_T("ODBC;DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)};UID=;PWD=;DBQ=%s"), strDBFile); CDatabase db;
if(db.Open(NULL, FALSE, FALSE,strConnect))
{
//连接数据库成功
CRecordset rs(&db);
CString strSql;
strSql = _T("SELECT * FROM info"); //SQL语句
rs.Open(CRecordset::snapshot, strSql); //执行Sql语句(可添加 删除 查询等)
// rs.Open(AFX_DAO_USE_DEFAULT_TYPE,strSql,NULL);
if(rs.IsOpen())
{
CDBVariant variant;
rs.MoveFirst();
while(!rs.IsEOF())
{
//读取记录
rs.GetFieldValue(_T("姓名"), variant);
rs.MoveNext();
}
rs.Close();
} db.Close();
return TRUE;
} return FALSE;
编译通过,运行提示:debug error。 调试时,提示在调用 SQLFetchScroll/SQLExtendedFetch 之前,没有列被绑定
State:SL009,Native:0,Origin:[Microsoft][ODBC 游标库],这个问题该怎么解决呢?
解决方案 »
- 今天写东西时遇上的几个问题,不知道原因...
- 当应用程序(如游戏)进入全屏模式之后,怎么在屏幕的某一区域绘制自己的图形?
- 在我自己派生一个CTreeCtrl类中添加左键双击消息,然后用classWizard将该类与控件关联在一起, 可调试时发现不能进入该消息里?
- 把一张图片,分割成两个图片,并保存
- 多线程导致fopen()调用阻塞???
- 新手提简单问题
- 调用HidD_GetAttributes,HidD_GetAttributes函数时link出错,我已经加了setupapi.lib和hid.lib库文件,为什么还会出错,是它们里面没有这两
- 远程数据库怎么连接?一定要帮助我啊!
- 如何在没装过vc的98上运行使用access数据库的MFC程序呢?急!
- 我的程序是vc6.0开发单文档程序,我想在程序完全启动完成之后又程序自动调用cview类或文档类中的一个非静态函数,请问能实现吗?
- EDIT控件如何把text文本属性,绘制到控件窗口的,可以拦截这个动作吗
- 线程中含有阻塞是socket,请问如何在外部终止线程
就是这一句
m_Database.Open(m_strDBName,0,0,";PWD=123");//123代表access数据库密码,
如果没有密码可以直接m_Database.Open(m_strDBName);
m_pRecordset->Open(dbOpenSnapshot, strQuery, dbReadOnly);
运行几年了好像还行
strConnect.Format("ODBC;DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)};DBQ=%s", strDBFile);
TRY
{
CDatabase m_db;
if(m_db.Open(NULL, false, false,strConnect))
{
strConnect =m_db.GetConnect();
//连接数据库成功
CRecordset rs(&m_db);
CString strSql;
strSql = "SELECT * FROM abc";
rs.Open(CRecordset::forwardOnly,strSql,CRecordset::readOnly); //执行Sql语句(可添加 删除 查询等)
CString variant;
while(!rs.IsEOF())
{ //读取记录
rs.GetFieldValue(("name"), variant);
if(variant=="大海")
{return TRUE;}
rs.MoveNext();
}
rs.Close();
m_db.Close();
}
}
CATCH(CDBException,e)
{AfxMessageBox("Database error!"+e->m_strError);}
END_CATCH;
return FALSE;已经实现了连接功能,少了一句。