C++封装ado连接sqlserver实现增删查改

时间: 2023-08-13 09:03:12 浏览: 26
好的,以下是一个 C++ ADO 封装示例代码,可以实现连接 SQL Server 数据库并进行增删改查操作。假设已经安装了 Microsoft ActiveX Data Objects 库。 ```cpp #include <iostream> #include <comutil.h> #include <windows.h> #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") using namespace std; class AdoConnection { public: AdoConnection() { CoInitialize(NULL); try { //连接字符串 _bstr_t connStr = "Provider=SQLOLEDB;Data Source=yourServerName;Initial Catalog=yourDatabaseName;User ID=yourUserName;Password=yourPassword"; //创建连接对象 m_pConn = ADODB::_ConnectionPtr("ADODB.Connection"); //打开连接 m_pConn->Open(connStr, "", "", ADODB::adModeUnknown); } catch (_com_error& e) { cerr << "Error: " << e.ErrorMessage() << endl; } } ~AdoConnection() { try { //关闭连接 m_pConn->Close(); } catch (_com_error& e) { cerr << "Error: " << e.ErrorMessage() << endl; } CoUninitialize(); } bool executeSql(const _bstr_t& sql) { try { //执行 SQL 语句 m_pConn->Execute(sql, NULL, ADODB::adCmdText); return true; } catch (_com_error& e) { cerr << "Error: " << e.ErrorMessage() << endl; return false; } } ADODB::_RecordsetPtr query(const _bstr_t& sql) { try { //查询数据 ADODB::_RecordsetPtr pRs("ADODB.Recordset"); pRs->Open(sql, m_pConn.GetInterfacePtr(), ADODB::adOpenKeyset, ADODB::adLockOptimistic, ADODB::adCmdText); return pRs; } catch (_com_error& e) { cerr << "Error: " << e.ErrorMessage() << endl; return NULL; } } private: ADODB::_ConnectionPtr m_pConn; }; int main() { AdoConnection conn; //查询数据 _bstr_t sql = "SELECT * FROM yourTableName"; ADODB::_RecordsetPtr pRs = conn.query(sql); if (pRs != NULL) { while (!pRs->adoEOF) { cout << pRs->Fields->GetItem("columnName1")->Value.bstrVal << " " << pRs->Fields->GetItem("columnName2")->Value.bstrVal << endl; pRs->MoveNext(); } pRs->Close(); } //插入数据 sql = "INSERT INTO yourTableName (columnName1, columnName2) VALUES ('value1', 'value2')"; conn.executeSql(sql); //更新数据 sql = "UPDATE yourTableName SET columnName1 = 'newValue1' WHERE columnName2 = 'value2'"; conn.executeSql(sql); //删除数据 sql = "DELETE FROM yourTableName WHERE columnName1 = 'value1'"; conn.executeSql(sql); return 0; } ``` 请注意替换代码中的数据库连接信息和 SQL 语句中的表名、列名和值。另外,使用 `AdoConnection` 类来封装连接,可以提高代码的复用性和可维护性。

最新推荐

使用pybind11封装C++结构体作为参数的函数实现步骤

主要介绍了用pybind11封装C++结构体作为参数的函数实现步骤,本文分步骤通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

c++ builder 一ADO方式连接SQL Server并操作SQL Server的实例讲解

该文档时为了补充兄弟姐妹们所说的没有实例说明,没能很好的解决问题而制作的,详细的介绍了ADO方式连接SQL Server数据库步骤,以及连接好数据库后如何操作数据库

VS2010__C++中用ODBC和ADO方式连接SQL_Server

该文档详细描述了在vs2010的开发环境下如何实现与SQL Server的连接,本文档适合初学者!

Windows环境下,Visual C++ 6.0连接SQLServer 2005数据库的ADO方法

Windows环境下,Visual C++ 6.0连接SQLServer 2005数据库的ADO方法

Sql Server 存储过程调用存储过程接收输出参数返回值

主要介绍了Sql Server 存储过程调用存储过程接收输出参数返回值,需要的朋友可以参考下

市建设规划局gis基础地理信息系统可行性研究报告.doc

市建设规划局gis基础地理信息系统可行性研究报告.doc

"REGISTOR:SSD内部非结构化数据处理平台"

REGISTOR:SSD存储裴舒怡,杨静,杨青,罗德岛大学,深圳市大普微电子有限公司。公司本文介绍了一个用于在存储器内部进行规则表达的平台REGISTOR。Registor的主要思想是在存储大型数据集的存储中加速正则表达式(regex)搜索,消除I/O瓶颈问题。在闪存SSD内部设计并增强了一个用于regex搜索的特殊硬件引擎,该引擎在从NAND闪存到主机的数据传输期间动态处理数据为了使regex搜索的速度与现代SSD的内部总线速度相匹配,在Registor硬件中设计了一种深度流水线结构,该结构由文件语义提取器、匹配候选查找器、regex匹配单元(REMU)和结果组织器组成。此外,流水线的每个阶段使得可能使用最大等位性。为了使Registor易于被高级应用程序使用,我们在Linux中开发了一组API和库,允许Registor通过有效地将单独的数据块重组为文件来处理SSD中的文件Registor的工作原

要将Preference控件设置为不可用并变灰java完整代码

以下是将Preference控件设置为不可用并变灰的Java完整代码示例: ```java Preference preference = findPreference("preference_key"); // 获取Preference对象 preference.setEnabled(false); // 设置为不可用 preference.setSelectable(false); // 设置为不可选 preference.setSummary("已禁用"); // 设置摘要信息,提示用户该选项已被禁用 preference.setIcon(R.drawable.disabled_ico

基于改进蚁群算法的离散制造车间物料配送路径优化.pptx

基于改进蚁群算法的离散制造车间物料配送路径优化.pptx

海量3D模型的自适应传输

为了获得的目的图卢兹大学博士学位发布人:图卢兹国立理工学院(图卢兹INP)学科或专业:计算机与电信提交人和支持人:M. 托马斯·福吉奥尼2019年11月29日星期五标题:海量3D模型的自适应传输博士学校:图卢兹数学、计算机科学、电信(MITT)研究单位:图卢兹计算机科学研究所(IRIT)论文主任:M. 文森特·查维拉特M.阿克塞尔·卡里尔报告员:M. GWendal Simon,大西洋IMTSIDONIE CHRISTOPHE女士,国家地理研究所评审团成员:M. MAARTEN WIJNANTS,哈塞尔大学,校长M. AXEL CARLIER,图卢兹INP,成员M. GILLES GESQUIERE,里昂第二大学,成员Géraldine Morin女士,图卢兹INP,成员M. VINCENT CHARVILLAT,图卢兹INP,成员M. Wei Tsang Ooi,新加坡国立大学,研究员基于HTTP的动态自适应3D流媒体2019年11月29日星期五,图卢兹INP授予图卢兹大学博士学位,由ThomasForgione发表并答辩Gilles Gesquière�