C++ ADO封装插入 SQLserver 的封装函数参数化查询
时间: 2024-01-10 11:03:59 浏览: 163
C++使用ADO封装连接SQLServer类
5星 · 资源好评率100%
在 C++ 中使用 ADO 封装插入 SQL Server 的函数,可以使用参数化查询来避免 SQL 注入攻击和提高查询性能。参数化查询是一种使用占位符和参数值来构建 SQL 查询语句的方法,可以将参数值与查询语句分离,从而避免 SQL 注入攻击和减少查询执行时间。
以下是一个示例代码,演示了如何使用 ADO 封装插入 SQL Server 的函数并使用参数化查询:
```c++
#include <iostream>
#include <comutil.h>
#include <adodb.h>
#pragma comment(lib, "comsuppw.lib")
#pragma comment(lib, "adodb.lib")
bool InsertData(const std::wstring& name, int age, const std::wstring& address)
{
try
{
// 初始化 COM 库
CoInitialize(NULL);
// 创建连接对象
ADODB::_ConnectionPtr conn("ADODB.Connection");
conn->ConnectionString = "Provider=SQLOLEDB;Data Source=(local);Initial Catalog=mydatabase;Integrated Security=SSPI;";
conn->Open("", "", "", 0);
// 创建 Command 对象
ADODB::_CommandPtr cmd("ADODB.Command");
cmd->ActiveConnection = conn;
cmd->CommandText = "INSERT INTO Person (Name, Age, Address) VALUES (?, ?, ?)";
// 添加参数
ADODB::ParameterPtr param1 = cmd->CreateParameter("Name", adWChar, adParamInput, 50, _bstr_t(name.c_str()));
ADODB::ParameterPtr param2 = cmd->CreateParameter("Age", adInteger, adParamInput, 0, age);
ADODB::ParameterPtr param3 = cmd->CreateParameter("Address", adWChar, adParamInput, 100, _bstr_t(address.c_str()));
cmd->Parameters->Append(param1);
cmd->Parameters->Append(param2);
cmd->Parameters->Append(param3);
// 执行命令
cmd->Execute(NULL, NULL, adCmdText);
// 关闭连接
conn->Close();
// 释放资源
cmd->Release();
conn->Release();
// 反初始化 COM 库
CoUninitialize();
return true;
}
catch (_com_error& e)
{
std::cerr << "Error: " << e.Description() << std::endl;
return false;
}
}
int main()
{
InsertData(L"张三", 25, L"北京市海淀区");
InsertData(L"李四", 30, L"上海市浦东新区");
return 0;
}
```
在这个示例中,我们定义了一个名为 InsertData 的函数,用于插入 Person 表中的数据。该函数接受三个参数:name,age 和 address,分别表示姓名、年龄和地址。函数内部使用 ADO 封装了 SQL Server 的插入操作,并使用参数化查询来构建 SQL 查询语句。
首先,我们使用 CoInitialize 函数初始化 COM 库,并创建一个 ADODB::_ConnectionPtr 对象 conn,用于连接 SQL Server 数据库。然后,我们创建一个 ADODB::_CommandPtr 对象 cmd,用于执行 SQL 查询语句。接着,我们添加三个参数,分别对应 SQL 查询语句中的三个问号占位符,用于传递参数值。最后,我们使用 cmd->Execute 函数执行 SQL 查询语句,并关闭连接和释放资源。
请注意,参数化查询中的问号占位符和参数值的顺序必须与 SQL 查询语句中的顺序一致,否则查询将无法执行。在添加参数时,需要使用 cmd->CreateParameter 函数创建参数,并指定参数的名称、数据类型、输入/输出方式、参数长度和参数值等属性。在执行查询时,需要使用 cmd->Execute 函数,并指定 adCmdText 参数表示查询类型为文本类型。
如果您需要插入更多的数据,请修改参数值,并多次调用 InsertData 函数即可。
阅读全文