Hola amigos, tengo un pequeño programa en c++ implementado en VS2010 que me gustaría que utilizase algunos valores de una base de datos que tengo creada en SQL server 2008.
Alguno de ustedes sabría decirme los pasos a seguir?? he visto diferentes maneras, con SQLAPI.h con, el driver OBDC, ASP...me gustaría hacerlo con el OBDC que es lo que mejor he entendido.
Buscando por internet he encontrado información pero siempre los cógigos que encuentro para conectarme a la base de datos me dan errores...creo que puede ser porque no añado bien los errores. Si me aclaráis esto ultimo os lo agradecería también.
Aqí os pongo por ejemplo uno de los muchos códigos que he encontrado y que no tengo narices de echarlo a rodar....
Un saludo grande a todos y gracias de antemano.
The connection of c++ program to database are explain step by step. To make aconnection follow the steps:
1). Include the Header Files
# include statements at the beginning of your programs:
#include <sql.h>
#include<sqltypes.h>
#include<sqlext.h>
2). Open a Connection to a Database
Set the environment handle:
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hdlEnv);
Set ODBC Driver version:
SQLSetEnvAttr(hdlEnv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC30);
Set the connection handle:
SQLAllocHandle(SQL_HANDLE_DBC, hdlEnv, &hdlConn);
Connect to the database:
SQLConnect(hdlConn, (SQLCHAR*)dsnName,SQL_NTS,(SQLCHAR*)userID,SQL_NTS, (SQLCHAR*)passwd, SQL_NTS);
3). Choose Driver
•DSN – Data Source Name
•Open the GUI ODBC Administrator (ODBCConfig)
•Choose the appropriate ODBC driver
•Provide a meaningful name to the DSN
•Specify the server and the host string (host string is required if the server is running on a different machine)
4). Query the Database
Querying the database involves the following steps:
–Creating a Statement
SQLAllocHandle(SQL_HANDLE_STMT, hdlDbc, &hdlStmt);
It allocates the memory for the statement handle. The database handle obtained during connection phase is passed as the second argument.
– Executing a Query
SQLExecDirect(hdlStmt, stmt, SQL_NTS);
It executes the query, which is passed in as SQLCHAR* in the second argument.
5). Extract the Data out of the Executed Query
SQLGetData(hStmt,colNum,type,retVal,buffLength,&cbData);
It extracts data from table as void* data and places it in retVal
colNum refers to the column number provided in the SELECT statement in SQLExecDirect()
Type is one of the standard ODBC data types
example: DT_STRING à for a string data type
DT_DOUBLE à for a double data type
buffLength is the estimated size of the expected data
cbData is the actual size of the data
6). Traverse Through the Results
SQLFetch(hStmt);
Fetches the next record
hStmt is the statement handle obtained using SQLAllocHandle
If a record is available, It returns SQL_SUCCEEDED
7). Close the Statement and the Connection
SQLFreeHandle(SQL_HANDLE_STMT, hdlStmt);
It closes and de-allocates the memory reserved for the statement handle
SQLFreeHandle(SQL_HANDLE_DBC, hdlConn);
It disconnects and de-allocates the memory reserved for the connection handle
SQLFreeHandle(SQL_HANDLE_ENV, hdlEnv);
It de-allocates the memory occupied by the environment handle
the above code will connect your c++ program with a sql database