acesss数据库连接C的方法
1.导入两个文件 "ADOConn.h"和"ADOConn.cpp"
下面是"ADOConn.h"文件
// ADOConn.h: interface for the ADOConn class.
//
//
#if !defined(AFX_ADOCONN_H__C0D4C332_6D3B_4B84_9739_2CCD724CC421__INCLUDED_)
#define AFX_ADOCONN_H__C0D4C332_6D3B_4B84_9739_2CCD724CC421__INCLUDED_
#import "C:\Program Files\Common Files\System\ado\msado15.dll"no_namespace \
rename("EOF","adoEOF")rename("BOF","adoBOF")
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class ADOConn
{
public:
void ExitConnect();
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
BOOL ExecuteSQL(_bstr_t bstrSQL);
BOOL OnInitADOConn();
ADOConn();
virtual ~ADOConn();
//添加一个指向Connection对象的指针
_ConnectionPtr m_pConnection;
//添加一个指向Recordset对象的指针
_RecordsetPtr m_pRecordset;
};
#endif // !defined(AFX_ADOCONN_H__C0D4C332_6D3B_4B84_9739_2CCD724CC421__INCLUDED_)
下面是.cpp文件
// ADOConn.cpp: implementation of the ADOConn class.
//
//
#include "stdafx.h"
#include "ADOConn.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//
// Construction/Destruction
//
ADOConn::ADOConn()
{
}
ADOConn::~ADOConn()
{
}
BOOL ADOConn::OnInitADOConn()
{
//初始化OLE/COM库环境
::CoInitialize(NULL);
try
{
//创建connection对象
m_pConnection.CreateInstance("ADODB.Connection");
//设置连接字符串
_bstr_t strConnect="uid=;pwd=;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=Database1.mdb;";
//SERVER和UID,PWD的设置根据实际情况来设置
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
//捕捉异常
catch(_com_error e)
{
//显示错误信息
AfxMessageBox(e.Description());
}
return true;
}
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
try
{
//是否已连接数据库
if (m_pConnection==NULL)
OnInitADOConn();
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch (_com_error e)
{
e.Description();
return false;
}
}
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
if (m_pConnection==NULL)
OnInitADOConn();
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch (_com_error e)
{
e.Description();
}
return m_pRecordset;
}
void ADOConn::ExitConnect()
{
//关闭记录集和连接
if (m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
//::CoUninitialize();
}
2.在stdafx.h中导入
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
3.在调用的文件中声明"ADOConn.h"
4.注意数据库是.mdb格式的文件
5.增
void CACETDlg::OnButton1() //增
{
// TODO: Add your control notification handler code here
UpdateData();
ADOConn m_ADOConn;
m_ADOConn.OnInitADOConn();
CString sql;
sql.Format("insert into stu (ID) values ('%s')",m_id);
//m_ADOConn.ExecuteSQL((_bstr_t)sql);
BOOL res = m_ADOConn.ExecuteSQL((_bstr_t)sql);
if(res)
MessageBox("保存成功");
else
MessageBox("保存失败");
m_ADOConn.ExitConnect();
//m_Grid.DeleteAllItems();
}
6.删
void CACETDlg::OnButton2() //删
{
// TODO: Add your control notification handler code here
UpdateData();
ADOConn m_ADOConn;
m_ADOConn.OnInitADOConn();
CString sql;
sql.Format("delete from stu where ID='%s'",m_id);
//m_ADOConn.ExecuteSQL((_bstr_t)sql);
BOOL res = m_ADOConn.ExecuteSQL((_bstr_t)sql);
if(res)
MessageBox("保存成功");
else
MessageBox("保存失败");
m_ADOConn.ExitConnect();
}
7.改
void CACETDlg::OnButton3() //改
{
// TODO: Add your control notification handler code here
UpdateData();
ADOConn m_ADOConn;
m_ADOConn.OnInitADOConn();
CString sql;
sql.Format("update stu set ID='60' where ID='%s'",m_id);
//m_ADOConn.ExecuteSQL((_bstr_t)sql);
BOOL res = m_ADOConn.ExecuteSQL((_bstr_t)sql);
if(res)
MessageBox("保存成功");
else
MessageBox("保存失败");
m_ADOConn.ExitConnect();
}
8.注意把建好的数据库放在你程序的文件夹下面才能用哦!!!!