c语言ado连接数据库
时间: 2023-08-24 14:15:35 浏览: 199
在 C 语言中连接数据库可以使用 ADO(ActiveX Data Objects)技术。ADO 是 Microsoft 公司开发的一种用于访问数据库的 COM 组件,可以连接多种类型的数据库,如 Access、SQL Server、Oracle 等。
以下是一个使用 ADO 连接 Access 数据库的 C 语言示例代码:
```c
#include <stdio.h>
#include <windows.h>
#include <ole2.h>
#include <msado15.h>
int main()
{
CoInitialize(NULL);
_ConnectionPtr pConn;
HRESULT hr;
try
{
hr = pConn.CreateInstance(__uuidof(Connection));
if (FAILED(hr))
throw "Failed to create instance of Connection.";
hr = pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\test.mdb;Persist Security Info=False;", "", "", adConnectUnspecified);
if (FAILED(hr))
throw "Failed to connect to database.";
_RecordsetPtr pRs;
hr = pRs.CreateInstance(__uuidof(Recordset));
if (FAILED(hr))
throw "Failed to create instance of Recordset.";
hr = pRs->Open("SELECT * FROM table1", pConn.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText);
if (FAILED(hr))
throw "Failed to execute SQL statement.";
while (!pRs->ADOEOF)
{
printf("ID: %d, Name: %s\n", pRs->Fields->Item["ID"]->Value, (char*)pRs->Fields->Item["Name"]->Value);
pRs->MoveNext();
}
pRs->Close();
pConn->Close();
}
catch (char* e)
{
printf("%s\n", e);
}
CoUninitialize();
return 0;
}
```
其中,需要引入以下头文件和库文件:
```c
#include <windows.h>
#include <ole2.h>
#include <msado15.h>
#pragma comment(lib, "ole32.lib")
#pragma comment(lib, "msado15.lib")
```
在连接字符串中,需要指定数据库的类型和路径。如果是 Access 数据库,可以使用 Microsoft.Jet.OLEDB.4.0 提供程序,如上面的示例代码所示。
在执行 SQL 语句时,可以使用 Recordset 对象来获取查询结果。在循环中遍历 Recordset 对象,获取每行记录的字段值即可。
需要注意的是,在使用 ADO 连接数据库之前,需要先调用 CoInitialize 函数进行 COM 初始化,使用完毕后需要调用 CoUninitialize 函数释放资源。
阅读全文