实现类的过程中借助到了单件模式
#pragma once
#include "SingleTon.h"
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
class AFXADODB : public Singleton<AFXADODB>
{
public:
_ConnectionPtr m_pConnection; //数据库连接
_RecordsetPtr m_pRecordset; //记录
_CommandPtr m_pCommand; //命令
_variant_t value;
public:
AFXADODB(void);
~AFXADODB(void);
void Create(void);
void Destory(void);
void Insert(void);
void Alter(void);
void Delete(void);
_RecordsetPtr Search(void);
};
#include "StdAfx.h"
#include "AFXADODB.h"
AFXADODB* Singleton<AFXADODB>::m_instance = NULL;
AFXADODB::AFXADODB(void)
{
}
AFXADODB::~AFXADODB(void)
{
}
void AFXADODB::Create(void)
{
//初始化COM库
if(!AfxOleInit())
{
::AfxMessageBox(_T("OLE初始化出错!"));
}
::CoInitialize(NULL);
HRESULT hr;
hr = m_pConnection.CreateInstance("ADODB.Connection");
try
{
if(SUCCEEDED(hr))
{
_bstr_t strConnect = "Provider=SQLOLEDB;Data Source=CSE013\\SQLEXPRESS;Initial Catalog=AFX_Server;Integrated Security=SSPI";
m_pConnection->Open(strConnect,"","",adModeUnknown);
// AfxMessageBox(_T("连接成功!"));
}
else
AfxMessageBox(_T("error!"));
}
catch(_com_error e)
{
AfxMessageBox(_T("连接失败!"));
AfxMessageBox(e.ErrorMessage());
}
}
void AFXADODB::Destory(void)
{
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
::CoUninitialize();
}
void AFXADODB::Insert(void)
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
try
{
CString strSQL = _T("INSERT INTO F_File_Info (F_ID, F_File_MD5,F_File_Info, F_HotKey) VALUES ('1','123','456','789')");
m_pConnection->Execute((_bstr_t)strSQL, &value, adCmdText);
// AfxMessageBox(_T("添加成功!"));
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
void AFXADODB::Alter(void)
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
try
{
m_pConnection->Execute("update F_File_Info set F_File_Info = F_File_Info + 's'",&value,adCmdText);
// AfxMessageBox(_T("更新成功!"));
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
void AFXADODB::Delete(void)
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
try
{
m_pConnection->Execute("delete from F_File_Info where F_ID='1'",&value,adCmdText);
// AfxMessageBox(_T("删除成功!"));
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
_RecordsetPtr AFXADODB::Search(void)
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
try
{
m_pRecordset = m_pConnection->Execute("select * from F_File_Info where F_HotKey like '%7%' union select * from F_File_Info where F_File_Info like '%7%' order by F_ID DESC",&value,adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
return m_pRecordset;
}
使用MFC的CListCtrl显示代码
AFXADODB* DB_Client = AFXADODB::GetInstance();
DB_Client->Create();
// DB_Client->Insert();
// DB_Client->Alter();
_RecordsetPtr a = DB_Client->Search();
while(!(a->adoEOF))
{
LPCTSTR temp = (LPCTSTR)a->GetCollect("F_ID").bstrVal;
List_Download.InsertItem(0, temp);
a->MoveNext();
}
- 大小: 12.1 KB
分享到:
相关推荐
通过这个MFC ADO连接SQL Server 2005的实例,我们可以了解到如何在MFC应用程序中使用ADO进行数据库操作的基本流程。这包括初始化COM环境、创建和配置数据库连接、执行SQL查询、处理查询结果以及清理资源。开发者可以...
以下是使用ADO连接SQL Server 2005的基本步骤: 1. 引入必要的库:在你的VC++项目中,确保包含以下头文件: ```cpp #include #include #include ``` 这些头文件提供了对COM组件(如ADO)的支持。 2. 初始化COM...
在VC中使用ADO连接SQL Server 2005的步骤主要包括以下几个部分: 1. **包含必要的头文件**: 在你的C++源文件中,你需要包含以下头文件来使用ADO对象: ```cpp #include #include #import "msado15.dll" no_...
以上就是使用VC2008和ADO连接SQL Server 2005数据库的基本步骤。这只是一个基础的指南,实际项目中可能需要处理更复杂的情况,如事务处理、参数化查询、错误处理等。通过深入学习ADO和MFC的相关文档,你可以进一步...
通过上述分析可以看出,使用ADO连接SQL Server是一个相对直接的过程。理解连接字符串的结构、正确创建和使用`Connection`对象是实现的关键。本文提供的`COperaterDB`类为开发者提供了一个良好的起点,可用于快速构建...
《航空订票系统:MFC与ADO连接SQL Server 2005的实践解析》 在信息技术领域,开发高效、用户友好的应用系统是至关重要的。本篇文章将深入探讨一个基于Visual Studio 2008 (VS2008) 的航空订票系统,该系统运用...
### ADO连接SQL Server 2008 Express方法总结 #### 概述 在软件开发过程中,使用ADO(ActiveX Data Objects)连接SQL Server数据库是非常常见的需求之一。本文档主要介绍如何通过ADO来连接Microsoft SQL Server ...
在IT行业中,C++是一种强大的编程语言,广泛用于系统...通过深入理解以上知识点,并结合"ConnDatabase"源代码进行实践,初学者可以逐步掌握C++通过ADO连接SQL Server数据库的方法,为后续的数据库编程打下坚实的基础。
标题中的“ADO连接SQL Server 2008数据库代码完整工程打开即用”指的是使用ActiveX Data Objects(ADO)技术来连接并操作SQL Server 2008数据库的一个已准备好的示例项目。ADO是微软提供的一种数据访问接口,允许...
在Microsoft Visual Studio(VS)的MFC(Microsoft Foundation Classes)框架下,开发人员可以使用ActiveX Data Objects(ADO)来连接并操作SQL Server数据库。ADO是.NET Framework的一部分,但也可以在非.NET环境中...
在Microsoft Visual Studio 2005 (VS2005) 的环境中,MFC(Microsoft Foundation Classes)是一个C++库,...通过实践和学习,你将能够熟练地在VS2005的MFC项目中运用ADO连接SQL Server数据库,实现数据的增删改查功能。
通过以上介绍,我们了解了如何在C++中使用ADO库封装连接SQL Server的类。这种方法不仅适用于SQL Server,而且具有良好的扩展性,能够适应不同的数据库环境。在开发过程中,灵活运用这样的封装可以提高代码的可读性...
以上就是一个使用VC++通过ADO连接SQL Server 2005数据库的基本示例。在实际开发中,你可能需要处理各种异常,优化连接字符串,使用参数化查询防止SQL注入,以及考虑事务处理等更复杂的场景。了解ADO的各种对象和属性...
### MFC中使用ADO连接SQL Server 2008 R2 #### 概述 Microsoft Foundation Classes(MFC)作为Windows平台下C++语言的一种封装库,在开发Windows应用程序时非常实用。ADO(ActiveX Data Objects)是一种用于访问...
这就是一个基础的C++ ADO连接SQL的实现框架。通过这个类,你可以轻松地在C++程序中执行SQL操作,处理数据库事务。注意,使用完ADO对象后,记得释放它们,防止内存泄漏。 总的来说,C++通过ADO连接SQL提供了强大的...
标题中的"(原创)PERL用ADO连接SQLSERVER2000"指的是使用Perl编程语言通过ActiveX Data Objects (ADO) 连接并操作Microsoft SQL Server 2000数据库的过程。描述提到这是作者经过努力研究得出的方法,适用于在...
在MFC(Microsoft Foundation Classes)框架中,使用ADO(ActiveX Data Objects)连接SQL Server数据库是一种常见的数据访问方式。ADO提供了一种高效、简单的方法来访问和操作数据库,包括SQL Server。以下将详细阐述...
项目中的"ADO2SqlServer"文件可能包含一个简单的VC工程,演示了上述步骤。通过阅读和运行这个示例,你可以更好地理解如何在VC中利用ADO与SQL Server进行交互。 7. **错误处理和性能优化** - 在实际开发中,应考虑...
本文将深入探讨如何使用ADO连接SQL Server,并解析数据库连接字符串的构造及其不同场景下的应用。 ### ADO连接SQL Server的数据库连接字符串详解 #### ODBC与OLEDB连接方式对比 ADO通过ODBC或OLEDB驱动程序与SQL ...
在使用ADO连接SQL Server之前,确保已安装以下组件: - Visual Studio 2012:包含MFC库,支持C++开发。 - SQL Server:数据库服务器,可以是本地或远程服务器。 - SQL Server Native Client:提供ADO所需的ODBC...