ADO 的变体。在我看来,这是最简单的选择——并且适用于大多数 DBMS。ADO - 采用 unicode,通过连接字符串或别名进行连接。我认为它是最简单的,因为它大约有 10 个类,其中包含使用 DBMS 所需的所有功能。VARIANT - 类型便于转换,不需要转换。所有函数都返回 HRESULT - 您可以 a) google 错误代码 b) 有将其转换为文本的函数。COM 兼容接口允许使用有助于转换的附加功能。ADO 也适用于 JS 脚本、VBS 和 MS-SQL SQL 脚本本身(启用 Active-X)。
#include <windows.h>
#include <adoint.h>
#include <stdio.h>
int main(int argc, const char ** argv) {
CoInitialize(0); // Нужно делать в начале программы
GUID g1;
CLSIDFromProgID(L"ADODB.Connection", &g1); // Система сама посдставит последнюю версию
Connection15 * conn = NULL; // 15 не означает что АДО устарела, для совместимости
ADORecordset * rs = NULL;
DWORD res = 0;
VARIANT_BOOL eof = VARIANT_TRUE;
if ((res = CoCreateInstance(*(GUID*)&g1, 0, CLSCTX_INPROC_SERVER,
IID_IUnknown, (void**)&conn))) return res; // Подключаем либу АДО
if ((res = conn->Open(L"mytest",L"portal",L"1",0)) != 0) return res;
// В execute нужно поставить SQL запрос
res = conn->Execute(L"select 123 a;",0,0,&rs);
if (res == 0) {
rs->MoveFirst();
if ((rs->get_EOF(&eof) == 0) && (eof== 0)) { // Тут
//можно будет поставить while вместо if
VARIANT index= {0,};
VARIANT val = {0,};
index.vt = VT_I4;
index.intVal = 0; // номер колонки
long ct = 0;
ADOFields* pFields = NULL;
ADOField* pField = NULL;
res= rs->get_Fields(&pFields);
if (res==0) pFields->get_Count(&ct);// Получить число столбцов
for (index.intVal=0; index.intVal < ct; index.intVal++){
if (res==0) res=pFields->get_Item(index,&pField);// Колонка 0
if (res == 0) res = pField->get_Value(&val);
if ((res == 0) &&(val.vt != VT_BSTR))
VariantChangeType(&val,&val,0,VT_BSTR); // Конвертация грубо в строку
if ((res==0)&&(val.vt == VT_BSTR)) {// Вывод на екран
printf("%ls",val.bstrVal);
};
VariantClear(&val); // Освобождаем ресурсы
if (pField) pField->Release();
}
if (pFields) pFields->Release();
rs->MoveNext(); // Надо если в цикле
}
}
return 0;
}
有几个著名的接口库,您可以通过它们直接或几乎直接使用数据库。在 C 中,C++ 可用
MSSQL - 指 OleDB 数据库。
我给你看一些。ODBC 和 ADO。ODBC 和 ADO 非常相似。可以在连接中写入别名(可以在“OdbcCad”的控制面板中注册的别名和连接字符串。连接字符串不同于 OleDB 连接字符串。
ODBC 大约有一百个(大约需要 20-30 个)可用于访问数据库的函数。下面是一个使用 ODBC 的最小示例,没有错误处理:
ODBC 链接
ADO 的变体。在我看来,这是最简单的选择——并且适用于大多数 DBMS。ADO - 采用 unicode,通过连接字符串或别名进行连接。我认为它是最简单的,因为它大约有 10 个类,其中包含使用 DBMS 所需的所有功能。VARIANT - 类型便于转换,不需要转换。所有函数都返回 HRESULT - 您可以 a) google 错误代码 b) 有将其转换为文本的函数。COM 兼容接口允许使用有助于转换的附加功能。ADO 也适用于 JS 脚本、VBS 和 MS-SQL SQL 脚本本身(启用 Active-X)。
ADO 链接
我不会给出关于 OLEDB 的示例。很难简单地写出需要什么。虽然对于 MSSQL OLEDB - 最好的方法。以下是一些示例链接。