
1、记录集的CreateInstance和Open也需要放到trycatch里面,于是发生异常的时候可以通过eDescription()得知具体异常信息;
2、AfxMessageBox出来之后,这里需要退出该函数,否则连接都没打开,下面的代码继续执行毫无意义;
3、别的没看出什么问题,但是我打开记录集一般都用这种方式:
_RecordsetPtr rs = m_pConnection1->Execute("select from employees where sex='男'",NULL,adCmdText);if(rs != NULL && !(rs->BOF && rs->ADOEOF))
{
rs->MoveFirst();
}
access 文件级的数据库,你会用sqlserver,用它就没有问题,就把连接字符串的Provider=SQLOLEDB1修改为如下即可。
CString strJetConnStr = "Provider=MicrosoftJetOLEDB40;Data Source="+access路径;
即使你机器不按照office,也可以用,只是你无法直接打开数据库建表,查询之类的,但是程序师可以照样用的。要注意的是,时间格式查询时候,sqlserver是 '时间值' ,access是#时间值#
>
首先在stdafxh中添加如下
#import "C:\Program Files\Common Files\System\ado\msado15dll" no_namespace rename("EOF","rsEOF")
上面的路径根据你自己的更改
然后在你要查询的地方写如下代码:
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
_CommandPtr pCmd(__uuidof(Command));
pConn->ConnectionString = "Provider=MicrosoftJetOLEDB40;Data Source="C:\amdb";
//这里的数据库也是你的绝对路径
pConn->Open("","","",adConnectUnspecified);
pRst = pConn->Execute("Select from ",NULL,adCmdText);
while(!pRst->rsEOF)
{
/
这里写你怎么把数据读取到外面,如下面是吧数据读到一个ListB0x控件中
((CListBox)GetDlgItem(IDC_LIST1))->AddString((_bstr_t)pRst->GetCollect("这里写属性名"));
/
pRst->MoveNext();
}
pRst->Close();
pConn->Close();
pRstRelease();
pConnRelease();
pCmdRelease();
CoUninitialize();
cdaodatabase
m_pdatabase;
cdaorecordset
m_precordset;
m_pdatabase=new
cdaodatabase;
try
{
m_pdatabase->open("dbstumdb");
m_precordset=new
cdaorecordset(m_pdatabase);
}
以上是建立数据库连接和数据集对象,有了m_precordset对象,就可以对数据库进行查询 *** 作。
cstring
strselect(_t("select
from
["));
strselect
+=tbstu;
strselect
+=
_t("]");
m_precordset->open(dbopendynaset,strselect);
查询stuid:
sql="select
from
tbstu
where
stuid="+id
如果stuid是字符串类型的:
sql="select
from
tbstu
where
stuid='"+id+"'"
你的数据库是不是放在程序文件一个目录?如果不是修改一下。m_pdatabase->open("dbstumdb");
还有在文件头添加:#include
直接利用你的 ado 对象调用 sql 的 insert 指令插入记录即可。我不知道你用的什么方式(或者说什么包装类)连接的 access ,所以也无法给出具体的代码。如果可以,你可以贴出部分你连接access时的代码我看下。
如果你是用原生 ado *** 作的话,代码应该类似下面,注意这段代码是写完一条记录就立即就关闭的,你可以等都写完了再关闭:
CoInitialize(NULL);_ConnectionPtr ppConn(__uuidof(Connection));
_RecordsetPtr ppRst(__uuidof(Recordset));
ppConn->ConnectionString="Provider=MicrosoftJetOLEDB40;Data Source=D:\\testmdb;Persist Security Info=False";
ppConn->Open("","","",adConnectUnspecified);
CString szSQl;
CString INS_name;
CString INS_age;
GetDlgItemText(IDC_EDIT1,INS_name);
GetDlgItemText(IDC_EDIT2,INS_age);
//下面这两行负责写入数据
szSQlFormat("insert into m_USER (pt_name,pt_age) values ('%s',%d)",INS_name,atol(INS_age));
ppRst=ppConn->Execute(_bstr_t(szSQl),NULL,adCmdText);
ppConn->Close();
ppRstRelease();
ppConnRelease();
CoUninitialize( );
以上就是关于MFC中使用ADO连接access数据库,但是总在打开记录集这里报错中断,代码附上,求大神指导全部的内容,包括:MFC中使用ADO连接access数据库,但是总在打开记录集这里报错中断,代码附上,求大神指导、你好,我刚毕业的。我之前用的数据库是SQL Server,现在我刚进的公司要我用Access数据库。这样与MFC连接啊、网上下载了一份基于MFC的《教师工资管理系统》,如何将其连接access数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)