VC++ 工程里使用OLE DB连接和操作 SQL Server Compact 3.5 数据库的所有代码
时间: 2024-03-26 20:39:44 浏览: 64
VC++连接数据库代码
5星 · 资源好评率100%
以下是使用OLE DB连接和操作SQL Server Compact 3.5数据库的VC++代码示例:
```cpp
#include <windows.h>
#include <sqloledb.h>
#include <iostream>
#include <string>
using namespace std;
int main()
{
// 初始化 COM 库
CoInitialize(NULL);
// 定义连接字符串(替换为自己的数据库路径和名称)
wstring connStr = L"Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source=C:\\MyData.sdf;Persist Security Info=False;";
// 创建连接对象
IDBInitialize* pConnection = NULL;
HRESULT hr = CoCreateInstance(CLSID_SQLSERVERCE, NULL, CLSCTX_INPROC_SERVER, IID_IDBInitialize, (void**)&pConnection);
if (FAILED(hr))
{
cout << "连接数据库失败!" << endl;
return 0;
}
// 初始化连接对象
hr = pConnection->Initialize();
if (FAILED(hr))
{
cout << "初始化连接对象失败!" << endl;
return 0;
}
// 定义命令字符串
wstring sqlCmd = L"SELECT * FROM MyTable";
// 创建命令对象
ICommandText* pCommand = NULL;
hr = pConnection->QueryInterface(IID_ICommandText, (void**)&pCommand);
if (FAILED(hr))
{
cout << "创建命令对象失败!" << endl;
return 0;
}
// 设置命令文本
hr = pCommand->SetCommandText(DBGUID_DBSQL, sqlCmd.c_str());
if (FAILED(hr))
{
cout << "设置命令文本失败!" << endl;
return 0;
}
// 执行命令
IRowset* pRowset = NULL;
hr = pCommand->Execute(NULL, IID_IRowset, NULL, NULL, (IUnknown**)&pRowset);
if (FAILED(hr))
{
cout << "执行命令失败!" << endl;
return 0;
}
// 获取结果集
HROW hRow = NULL;
DBCOUNTITEM count = 0;
while (pRowset->GetNextRows(NULL, 0, 1, &count, &hRow) == S_OK)
{
// 获取行数据
DBBINDING binding;
DWORD dwBindingSize = sizeof(binding);
pRowset->GetBindings(0, &binding, &dwBindingSize);
BYTE* pData = new BYTE[binding.cbMaxLen];
pRowset->GetData(hRow, binding.obValue, pData, binding.cbMaxLen);
// 处理行数据
// ...
// 释放内存
delete[] pData;
pData = NULL;
// 释放行句柄
pRowset->ReleaseRows(1, &hRow, NULL, NULL, NULL);
hRow = NULL;
}
// 释放结果集
pRowset->Release();
pRowset = NULL;
// 释放命令对象
pCommand->Release();
pCommand = NULL;
// 释放连接对象
pConnection->Uninitialize();
pConnection->Release();
pConnection = NULL;
// 释放 COM 库
CoUninitialize();
return 0;
}
```
注意,要使用此代码,需要在项目属性的“链接器”->“输入”->“附加依赖项”中添加以下库文件:
```
oledb.lib
sqlceoledb35.lib
```
阅读全文