ejemplo de ADO
Publicado por HamsteR (8 intervenciones) el 14/04/2001 20:03:40
Por favor, necesito ejemplos que utilicen el acceso a una base de datos de access basedat.mdb
con ADO u ODBC.
Gracias.
con ADO u ODBC.
Gracias.
Valora esta pregunta


0
#include <iostream>
#include <comutil.h>
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
int main() {
try {
_com_ptr_t<_com_IIID<ADODB::Connection, &__uuidof(ADODB::Connection)>> conn;
_com_ptr_t<_com_IIID<ADODB::Recordset, &__uuidof(ADODB::Recordset)>> rs;
conn.CreateInstance(__uuidof(ADODB::Connection));
rs.CreateInstance(__uuidof(ADODB::Recordset));
// Establecer la cadena de conexión
conn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\ruta\\a\\basedat.mdb;");
// Ejecutar una consulta SQL
rs->Open("SELECT * FROM tabla", conn.GetInterfacePtr(), ADODB::adOpenStatic, ADODB::adLockOptimistic, ADODB::adCmdText);
// Recorrer los registros
while (!rs->adoEOF) {
std::cout << "Campo1: " << (_bstr_t)rs->Fields->GetItem("Campo1")->Value << std::endl;
std::cout << "Campo2: " << (_bstr_t)rs->Fields->GetItem("Campo2")->Value << std::endl;
rs->MoveNext();
}
// Cerrar el recordset y la conexión
rs->Close();
conn->Close();
}
catch (_com_error& e) {
std::cerr << "Error: " << e.ErrorMessage() << std::endl;
}
return 0;
}
#include <iostream>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
int main() {
SQLHENV env;
SQLHDBC dbc;
SQLHSTMT stmt;
SQLRETURN ret;
// Inicializar el entorno
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
ret = SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
// Establecer la conexión
ret = SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
ret = SQLDriverConnect(dbc, NULL, (SQLCHAR*)"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\\ruta\\a\\basedat.mdb;", SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
// Preparar la consulta SQL
ret = SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
ret = SQLExecDirect(stmt, (SQLCHAR*)"SELECT * FROM tabla", SQL_NTS);
// Recorrer los registros
SQLCHAR campo1[255];
SQLCHAR campo2[255];
while (SQLFetch(stmt) == SQL_SUCCESS) {
ret = SQLGetData(stmt, 1, SQL_C_CHAR, campo1, sizeof(campo1), NULL);
ret = SQLGetData(stmt, 2, SQL_C_CHAR, campo2, sizeof(campo2), NULL);
std::cout << "Campo1: " << campo1 << std::endl;
std::cout << "Campo2: " << campo2 << std::endl;
}
// Liberar los recursos
ret = SQLFreeHandle(SQL_HANDLE_STMT, stmt);
ret = SQLDisconnect(dbc);
ret = SQLFreeHandle(SQL_HANDLE_DBC, dbc);
ret = SQLFreeHandle(SQL_HANDLE_ENV, env);
return 0;
}