vc连接数据库
通过ADO连接ACCESS数据库。
.h
#if !defined(AFX_ADOCON_H__E1A9EF69_A667_4EE1_BA86_041FC07FF3C4__INCLUDED_)#define AFX_ADOCON_H__E1A9EF69_A667_4EE1_BA86_041FC07FF3C4__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000class ADOCon {public: _ConnectionPtr m_pConnection; _CommandPtr m_pCommand; _RecordsetPtr m_pRecordset; ADOCon(); virtual ~ADOCon(); BOOL InitCon(); void ExInitCon();};#endif // !defined(AFX_ADOCON_H__E1A9EF69_A667_4EE1_BA86_041FC07FF3C4__INCLUDED_)ADOCon::ADOCon(){ InitCon();}ADOCon::~ADOCon(){}BOOL ADOCon::InitCon(){ AfxOleInit(); m_pConnection.CreateInstance(__uuidof(Connection)); try { m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=User.mdb","","",adModeUnknown); return true; } catch(_com_error e) { AfxMessageBox("数据库连接失败,确认数据库是否在当前路径下!"); return FALSE; } }void ADOCon::ExInitCon(){ if(m_pConnection->State) m_pConnection->Close(); m_pConnection= NULL;} catch(_com_error e) { AfxMessageBox(e.Description()); return FALSE; }
[解决办法]
COM库有没有初始化.
在InitInstance()中初始化COM:?
CoInitialize(NULL);?
在ExitInstance()中释放COM:?
CoUninitialize();
[解决办法]
catch(_com_error e)///捕捉异常
?{
? CString errormessage;
? errormessage.Format(_T("连接数据库失败!\r\n错误信息:%s"),e.ErrorMessage());
? AfxMessageBox(errormessage);
? }?
看看是啥
我是这样连的
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0 ; \
? Data Source = .\\DataBase\\aa.mdb",
? "","",adModeUnknown);
跟你一样的,注意这样的话,你要当心你的当前路径是在哪??
[解决办法]
加::CoInitialize(NULL);?.....
[解决办法]
测试一下连接字符串
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;User Id=admin;Password=;"