先#import msado15.dll
后AfxOleInit
再_CommandPtr _ConnectionPtr _RecordsetPtr,
能通过编译,但运行时就出错了。
test.exe 中的 0x77e6a4e1 处未处理的异常: Microsoft C++ exception: _com_error @ 0x0012f4b8 。
后AfxOleInit
再_CommandPtr _ConnectionPtr _RecordsetPtr,
能通过编译,但运行时就出错了。
test.exe 中的 0x77e6a4e1 处未处理的异常: Microsoft C++ exception: _com_error @ 0x0012f4b8 。
#include <basetsd.h>
#include <ole2.h>#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")
*******************************************************
::CoInitialize(NULL); //初始化Com*******************************************************
IADORecordBinding *picRs = NULL;
_RecordsetPtr pRs("ADODB.Recordset");
_ConnectionPtr pConn("ADODB.Connection" );
//CFootballTeamRs rsFootballTeam;
GetModuleFileName(NULL,FileName,MAX_PATH);
(_tcsrchr(FileName,'\\'))[1] = 0; lstrcat(FileName,_T("pass2.mdb")); strSql = strSql +
"Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source = " +
FileName +
";Persist Security Info=False;Jet OLEDB:Database Password=cd;"; //pConn->ConnectionString = chDataSource;
//pConn->Provider = _T("Microsoft.Jet.OLEDB.4.0");
CString sqlSentence = _T("select * from pass");
try
{
pConn->Open((_bstr_t)strSql, "", "", adModeUnknown); pRs->QueryInterface(
__uuidof(IADORecordBinding), (LPVOID*)&picRs); pRs->Open( (_variant_t)sqlSentence, // 查询DemoTable表中所有字段
pConn.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(...)
{}
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
2。app文件的InitInstance中加入
if(S_OK!=OleInitialize(NULL))
{
AfxMessageBox("初始化COM组件库错误");
}
下面就是数据库操作
_ConnectionPtr pConn;
_RecordsetPtr pRs;
CString strSQL;
pConn.CreateInstance(__uuidof(Connection));
pConn->CursorLocation=adUseClient;
strSQL="Provider=SQLOLEDB;Server=Gooyan;DataBase=SkillsBox;UID=sa;PWD=aaaaaaaa";
pConn->Open(_bstr_t(strSQL),"","",-1);pRs.CreateInstance(__uuidof(Recordset));
pRs->CursorLocation=adUseClient;
pRs->PutActiveConnection(pConn.GetInterfacePtr());pRs1.CreateInstance(__uuidof(Recordset));
pRs1->CursorLocation=adUseClient;
pRs1->PutActiveConnection(pConn.GetInterfacePtr());strSQL="select * from catalog order by cataid";
pRs->Open(_bstr_t(strSQL),vtMissing,adOpenDynamic,adLockBatchOptimistic,adCmdText);
ADO(注意不是ADO.NET)连接不同的如ACCESS 如SQL 甚至不同的版本的ACCESS都是不同的字符串>
本题词中"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=abc.mdb;”,“”,“”,adModeUnknown)
1.这里如果你的abc.mdb不在当前目录下,则也可以这样写D:\\mydocumety\\XXX\\abc.mdb;”,“”,“”,adModeUnknown)
注意这晨是\\,这是我费了很大时间搞清楚的。
2。如果你的abc.mdb没有密吗,则上面这样一般就能接通/
如果有密吗,那么是不能直接在连接串中写入密吗的,那样会出现一个“未处理的连接错误”