MFC对话框如何连接Access数据库的数据? MFC对话框如何连接Access数据库的数据? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 try { hr = m_pConnection.CreateInstance("ADODB.Connection");/// if( TRUE == SUCCEEDED(hr)) { strDBFile = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strDBFile; hr = m_pConnection->Open((_bstr_t)strDBFile ,_bstr_t(strUser),_bstr_t(strUser),adModeUnknown); } } catch(_com_error e) { CString errormessage; errormessage.Format("%s",e.ErrorMessage()); AfxMessageBox(errormessage); return FALSE; } 给你一个例子,MFC+ADO+ACCESS MDBhttp://www.vckbase.com/document/viewdoc/?id=496 try { hr = m_pConnection.CreateInstance("ADODB.Connection");/// if( TRUE == SUCCEEDED(hr)) { strDBFile = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strDBFile; hr = m_pConnection->Open((_bstr_t)strDBFile ,_bstr_t(strUser),_bstr_t(strUser),adModeUnknown); } } catch(_com_error e) { CString errormessage; errormessage.Format("%s",e.ErrorMessage()); AfxMessageBox(errormessage); return FALSE; ::CoInitialize(NULL); m_pConnection.CreateInstance("ADODB.Connection"); //连接数据库 try { m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;User ID=admin;Data Source=.\\info.mdb; ","","",adModeUnknown); } catch(_com_error e) { AfxMessageBox("数据库连接失败!"); } m_pConnection 是哪个文件里定义的?我封装在类里面的时候,发现这个没定义。 在对话框初始化InitDialogLONG lStyle = m_ListCtrl.SendMessage (LVM_GETEXTENDEDLISTVIEWSTYLE); lStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_HEADERDRAGDROP; m_ListCtrl.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, (LPARAM)lStyle); LV_COLUMN lvc; lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH /*| LVCF_FMT*/; lvc.iSubItem = 0; lvc.pszText = (char *)"序号"; lvc.cx = 50; m_ListCtrl.InsertColumn(0,&lvc); lvc.iSubItem = 1; lvc.pszText = (char *)"操作内容"; lvc.cx = 200; m_ListCtrl.InsertColumn(1,&lvc); lvc.iSubItem = 2; lvc.pszText = (char *)"用户"; lvc.cx =100; m_ListCtrl.InsertColumn(2,&lvc); lvc.iSubItem = 3; lvc.pszText = (char *)"时间"; lvc.cx = 100; m_ListCtrl.InsertColumn(3,&lvc);我是用的别人封装好的ADO连接,打开数据库下面是查询UpdateData(TRUE); if (m_star>m_end) { MessageBox("起始日期不能大于截止日期,请重新输入!","提示信息", MB_ICONEXCLAMATION ); return; } m_ListCtrl.DeleteAllItems(); CADORecordset* pRs = new CADORecordset(CPrjKeyMgrApp::g_pDb); int i = -1; UpdateData(TRUE); CString strStar; CString strEnd; CString TempSql; strStar.Format("%04d-%02d-%02d %02d:%02d:%02d",m_star.GetYear(),m_star.GetMonth(),m_star.GetDay(),0,0,0); strEnd.Format("%04d-%02d-%02d %02d:%02d:%02d",m_end.GetYear(),m_end.GetMonth(),m_end.GetDay()+1,0,0,0); CString temp="select * from SystemLog WHERE TIMEVALUE >='"+strStar+"'AND TIMEVALUE <='"+strEnd+"'"; if(pRs->Open((LPCTSTR)temp)) { while(!pRs->IsEof()) { LV_ITEM lvitem; lvitem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE; lvitem.state = 0; lvitem.stateMask = 0; char temp[50]; lvitem.iItem = ++i; lvitem.iSubItem = 0; lvitem.pszText =itoa(i, temp, 10); m_ListCtrl.InsertItem(&lvitem); pRs->GetFieldValue("OPERATION",TempSql); m_ListCtrl.SetItemText(i, 1, (LPCTSTR)TempSql); pRs->GetFieldValue("OPERATOR",TempSql); m_ListCtrl.SetItemText(i, 2, (LPCTSTR)TempSql); pRs->GetFieldValue("TIMEVALUE",TempSql); m_ListCtrl.SetItemText(i, 3, (LPCTSTR)TempSql); pRs->MoveNext(); } pRs->Close(); } else AfxMessageBox("记录集创建失败"); wo mei you yong guo 原来好多人不用vc了其实vc还是蛮有用的 m_pConnection.CreateInstance(__uuidof(Connection)); try { // 打开本地Access库Demo.mdb m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb","","",adModeUnknown); //D:\\欧练习程序\\CurrentCast\\debug\\db1.mdb } catch(_com_error e) { AfxMessageBox(e.ErrorMessage()); return FALSE; } stdafx.h#import "C:\program files\common files\system\ado\msado15.dll" \ no_namespace \rename ("EOF", "adoEOF") //引入ADO DLLextern _ConnectionPtr m_pConnection;extern _RecordsetPtr m_pRecordset; //记录集//--------------------------------------stdafx.cpp_ConnectionPtr m_pConnection;_RecordsetPtr m_pRecordset; //记录集 ADO好久没用vc了 怀念……………… 在stdafx.h 中,#import "C:\program files\common files\system\ado\msado15.dll" \ no_namespace \ rename ("EOF", "adoEOF") //引入ADO DLL在对话框的头文件中:_ConnectionPtr m_pConnection; _RecordsetPtr m_pRecordset; //记录集 c:\program files\microsoft visual studio\vc98\include\dbdaoint.h(33) : error C2011: 'EditModeEnum' : 'enum' type redefinitionc:\program files\microsoft visual studio\vc98\include\dbdaoint.h(57) : error C2011: 'LockTypeEnum' : 'enum' type redefinitionc:\program files\microsoft visual studio\vc98\include\dbdaoint.h(73) : error C2011: 'FieldAttributeEnum' : 'enum' type redefinitionc:\program files\microsoft visual studio\vc98\include\dbdaoint.h(83) : error C2011: 'DataTypeEnum' : 'enum' type redefinitionc:\program files\microsoft visual studio\vc98\include\dbdaoint.h(255) : error C2011: 'ParameterDirectionEnum' : 'enum' type redefinitionc:\program files\microsoft visual studio\vc98\include\dbdaoint.h(268) : error C2011: 'RecordStatusEnum' : 'enum' type redefinition执行 cl.exe 时出错.为什么我连接运行后提示又以上错误啊!!!!! 都是重定义错误点菜单 EDIT-〉Find in files (编辑-〉文件中查找)分别查找EditModeEnum LockTypeEnum FieldAttributeEnum 这些词 看是不是有两处或多处定义了 删掉多余的定义就行 30楼所谓的重定义 是少了#import "c:\\...\\msado.dll" 试试 FormView 也和对话框差不多再用List Box 和 ADO 试试 FormView 也和对话框差不多再用List Box 和 ADO http://download.csdn.net/source/503320 http://www.vckbase.com/document/viewdoc/?id=496 为什么我在visual studio2010中做的access访问程序,部署到其他计算机上(已经安装c/c++2010版运行时态库),就是打不开数据库连接???? 我发得贴,谁能帮我回答,不胜感激!http://topic.csdn.net/u/20110909/10/d53b0815-4c3c-491b-b3f0-b1bc0516ee05.html?seed=355257816&r=75431700#r_75431700 关于DLL Inject的问题 3维漫游的导航图 急!!请大虾指点:如何创建子目录 问2个_RecordsetPtr的问题 在vc mfc程序中强制中止程序的函数是什么? 调用接口Shapes.AddPicture后,excel进程无法退出 奇怪啊?! 各位,麻烦帮帮忙!寻SOCKET传送文件的例子! 菜鸟发问:VC中带有Grid控件的对话框无法显示 进程外服务器与客户端的数据交互原理! 控件的使能 mfc控件
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///
if( TRUE == SUCCEEDED(hr))
{
strDBFile = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strDBFile;
hr = m_pConnection->Open((_bstr_t)strDBFile ,_bstr_t(strUser),_bstr_t(strUser),adModeUnknown);
}
}
catch(_com_error e)
{
CString errormessage;
errormessage.Format("%s",e.ErrorMessage());
AfxMessageBox(errormessage);
return FALSE;
}
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///
if( TRUE == SUCCEEDED(hr))
{
strDBFile = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strDBFile;
hr = m_pConnection->Open((_bstr_t)strDBFile ,_bstr_t(strUser),_bstr_t(strUser),adModeUnknown);
}
}
catch(_com_error e)
{
CString errormessage;
errormessage.Format("%s",e.ErrorMessage());
AfxMessageBox(errormessage);
return FALSE;
try
{
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;User ID=admin;Data Source=.\\info.mdb; ","","",adModeUnknown); }
catch(_com_error e)
{
AfxMessageBox("数据库连接失败!");
}
LONG lStyle = m_ListCtrl.SendMessage
(LVM_GETEXTENDEDLISTVIEWSTYLE);
lStyle |= LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES |
LVS_EX_HEADERDRAGDROP;
m_ListCtrl.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0,
(LPARAM)lStyle);
LV_COLUMN lvc;
lvc.mask = LVCF_TEXT | LVCF_SUBITEM | LVCF_WIDTH /*| LVCF_FMT*/;
lvc.iSubItem = 0;
lvc.pszText = (char *)"序号";
lvc.cx = 50;
m_ListCtrl.InsertColumn(0,&lvc);
lvc.iSubItem = 1;
lvc.pszText = (char *)"操作内容";
lvc.cx = 200;
m_ListCtrl.InsertColumn(1,&lvc);
lvc.iSubItem = 2;
lvc.pszText = (char *)"用户";
lvc.cx =100;
m_ListCtrl.InsertColumn(2,&lvc);
lvc.iSubItem = 3;
lvc.pszText = (char *)"时间";
lvc.cx = 100;
m_ListCtrl.InsertColumn(3,&lvc);
我是用的别人封装好的ADO连接,打开数据库
下面是查询
UpdateData(TRUE);
if (m_star>m_end)
{
MessageBox("起始日期不能大于截止日期,请重新输入!","提示信息", MB_ICONEXCLAMATION );
return;
}
m_ListCtrl.DeleteAllItems();
CADORecordset* pRs = new CADORecordset(CPrjKeyMgrApp::g_pDb);
int i = -1;
UpdateData(TRUE);
CString strStar;
CString strEnd;
CString TempSql;
strStar.Format("%04d-%02d-%02d %02d:%02d:%02d",m_star.GetYear(),m_star.GetMonth(),m_star.GetDay(),0,0,0);
strEnd.Format("%04d-%02d-%02d %02d:%02d:%02d",m_end.GetYear(),m_end.GetMonth(),m_end.GetDay()+1,0,0,0);
CString temp="select * from SystemLog WHERE TIMEVALUE >='"+strStar+"'AND TIMEVALUE <='"+strEnd+"'";
if(pRs->Open((LPCTSTR)temp))
{
while(!pRs->IsEof())
{
LV_ITEM lvitem;
lvitem.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_STATE;
lvitem.state = 0;
lvitem.stateMask = 0;
char temp[50];
lvitem.iItem = ++i;
lvitem.iSubItem = 0;
lvitem.pszText =itoa(i, temp, 10);
m_ListCtrl.InsertItem(&lvitem);
pRs->GetFieldValue("OPERATION",TempSql);
m_ListCtrl.SetItemText(i, 1, (LPCTSTR)TempSql);
pRs->GetFieldValue("OPERATOR",TempSql);
m_ListCtrl.SetItemText(i, 2, (LPCTSTR)TempSql);
pRs->GetFieldValue("TIMEVALUE",TempSql);
m_ListCtrl.SetItemText(i, 3, (LPCTSTR)TempSql);
pRs->MoveNext();
}
pRs->Close();
}
else
AfxMessageBox("记录集创建失败");
其实vc还是蛮有用的
try
{
// 打开本地Access库Demo.mdb
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb","","",adModeUnknown); //D:\\欧练习程序\\CurrentCast\\debug\\db1.mdb
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
return FALSE;
}
no_namespace \
rename ("EOF", "adoEOF") //引入ADO DLLextern _ConnectionPtr m_pConnection;
extern _RecordsetPtr m_pRecordset; //记录集//--------------------------------------
stdafx.cpp_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset; //记录集
好久没用vc了 怀念………………
no_namespace \
rename ("EOF", "adoEOF") //引入ADO DLL在对话框的头文件中:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset; //记录集
c:\program files\microsoft visual studio\vc98\include\dbdaoint.h(57) : error C2011: 'LockTypeEnum' : 'enum' type redefinition
c:\program files\microsoft visual studio\vc98\include\dbdaoint.h(73) : error C2011: 'FieldAttributeEnum' : 'enum' type redefinition
c:\program files\microsoft visual studio\vc98\include\dbdaoint.h(83) : error C2011: 'DataTypeEnum' : 'enum' type redefinition
c:\program files\microsoft visual studio\vc98\include\dbdaoint.h(255) : error C2011: 'ParameterDirectionEnum' : 'enum' type redefinition
c:\program files\microsoft visual studio\vc98\include\dbdaoint.h(268) : error C2011: 'RecordStatusEnum' : 'enum' type redefinition
执行 cl.exe 时出错.
为什么我连接运行后提示又以上错误啊!!!!!
都是重定义错误
点菜单 EDIT-〉Find in files (编辑-〉文件中查找)
分别查找EditModeEnum LockTypeEnum FieldAttributeEnum 这些词
看是不是有两处或多处定义了 删掉多余的定义就行
#import "c:\\...\\msado.dll"
再用List Box 和 ADO
再用List Box 和 ADO
http://topic.csdn.net/u/20110909/10/d53b0815-4c3c-491b-b3f0-b1bc0516ee05.html?seed=355257816&r=75431700#r_75431700