MFC中使用ADO连接access数据库,但是总在打开记录集这里报错中断,代码附上,求大神指导

MFC中使用ADO连接access数据库,但是总在打开记录集这里报错中断,代码附上,求大神指导,第1张

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数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9327137.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存