使用ADO ActiveX控件 ADO Data control 访问Access数据库。
我在我的对话框里加了个ADO Data control,用来访问Access数据库。我的做法如下。
前期已在StdAfx.h中添加
#include "COMDEF.h"
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
已经通过其属性对话框和数据库建立了连接,
1、从中选择Microsoft Jet 4.0 OLE DB Provider选项,然后单击“下一步”按钮,出现“测试连接”对话框,单击,选择数据库a1.mdb->打开单击“测试连接”按钮,出现对话框“测试连接成功”,
2、单击“确定”按钮退出。再右键单击Adodc1控件,选择Properties属性命令,见Use Connection String下的最终连接字符串为:Provider = Microsoft.Jet.OLEDB.4.0;Data Source = D:\Backup\我的文档\a1.mdb;Persist Security Info = False。
3、单击RecordSource选项卡,将Command Type选择为1-adCmdText。在Command Text(SQL)文本框中输入:select *from a1,然后关闭属性对话框。
并通过在其控件上右击->建立类向导,自动导入了 C_Recordset C_Recordset CFields CField CAdodc类。并申明了
CAdodc m_myadoc;
C_Recordset m_myrest;
CFields m_Fields;
CField m_Field;
在OnInitDialog()
中执行
m_myadoc.SetRecordSource("SELECT * FROM a1");
m_myadoc.Refresh();
m_myrest = m_myadoc.GetRecordset();
// 这一行以上的代码都没有问题。
m_myrest.MoveFirst();//正常运行时,程序自动结束。
//调试时显示Unhandled exception in a.exe (MFC042D.DLL):OxC000005: Access Violation
//只要是和m_myrest有关的任何操作都会导致上述的问题,包括m_myrest.GetRecordCount(),m_myrest.MoveNext()等。
//工程已经完成很多了,就差一点了,但是卡在这实在调试不出来,希望高手能人指点一二。