|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2005
Messaggi: 274
|
[C++] Access
Salve,
Volevo sapere se c'era un modo per accedere a un File Access 07. Mi spiego meglio stò utilizzando CodeBlock su Windows con compilatore MingW. Ho visto che ci sono le dtl ma non riesco a compilarle con tale compilatore. Qualcuno ha qualche idea? Grazie |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22462
|
che errore ti da?
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Sep 2005
Messaggi: 274
|
Non c'è proprio il makefile.
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Sep 2005
Messaggi: 274
|
E' possibile che non ci sia modo di accedere ad un file access senza usare le MFC?
Non ci voglio credere
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Sep 2005
Messaggi: 274
|
Veramente Assurdo!
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Sep 2005
Messaggi: 274
|
EUREKA
Ecco la soluzione, mi rispondo da solo. Codice:
#include <windows.h>
#include <sqlext.h>
#include <iostream>
int main()
{
char szDSN[256] = "Driver={Microsoft Access Driver (*.mdb)};Dbq=.\\mio_database.mdb;Uid=;Pwd=;";
/* Metodo di Accesso usato */
const char* DAM = "Connessione ODBC Diretta";
HENV hEnv;
HDBC hDbc;
/* ODBC API return status */
RETCODE rc;
int iConnStrLength2Ptr;
char szConnStrOut[256];
const char* query = "SELECT Nome, Cognome FROM mia_tabella;";
SQLCHAR chval1[128], chval2[128], colName[128];
int ret1;
int ret2;
/* Numero di righe e colonne nel result set */
SQLINTEGER rowCount = 0;
SQLSMALLINT fieldCount = 0, currentField = 0;
HSTMT hStmt;
/* Allochiamo un environment handle */
rc = SQLAllocEnv(&hEnv);
/* Allochiamo un connection handle */
rc = SQLAllocConnect(hEnv, &hDbc);
/* Connessione al database 'mio_database.mdb' */
rc = SQLDriverConnect(hDbc, NULL, (unsigned char*)szDSN,
SQL_NTS, (unsigned char*)szConnStrOut,
255, (SQLSMALLINT*)&iConnStrLength2Ptr, SQL_DRIVER_NOPROMPT);
if (SQL_SUCCEEDED(rc))
{
printf("%s: Connesso con successo al Database. Data source name: \n %s\n",
DAM, szConnStrOut);
/* Prepariamo le query SQL */
printf("%s: SQL query:\n %s\n", DAM, query);
rc = SQLAllocStmt(hDbc,&hStmt);
rc = SQLPrepare(hStmt, (unsigned char*)query, SQL_NTS);
/* Binding del result set con le colonne */
rc = SQLBindCol(hStmt, 1, SQL_C_CHAR, chval1, 128, (SQLINTEGER*)&ret1);
rc = SQLBindCol(hStmt, 2, SQL_C_CHAR, chval2, 128, (SQLINTEGER*)&ret2);
/* Esecuzione della query e creazione di un record set */
rc = SQLExecute(hStmt);
if (SQL_SUCCEEDED(rc))
{
printf("%s: Recupero schema info per il result set:\n", DAM);
SQLNumResultCols(hStmt, &fieldCount);
if (fieldCount > 0)
{
for (currentField=1; currentField <= fieldCount; currentField++)
{
SQLDescribeCol(hStmt, currentField,
colName, sizeof(colName), 0, 0, 0, 0, 0);
printf(" | %s", colName);
}
printf("\n");
}
else
{
printf("%s: ERRORE: Il Numero di campi nel result set e' 0.\n", DAM);
}
printf("%s: Fetch data:\n", DAM);
/* Loop sulle righe del result set */
rc = SQLFetch(hStmt);
while (SQL_SUCCEEDED(rc))
{
printf(" | %s | %s\n", chval1, chval2);
rc = SQLFetch(hStmt);
rowCount++;
};
printf("%s: Total Row Count: %d\n", DAM, rowCount);
rc = SQLFreeStmt(hStmt, SQL_DROP);
}
}
else
{
printf("%s: Non riesco a connetermi a %s.\n\n", DAM, szDSN);
}
/* Disconnessione e rilascio degli handles allocati*/
SQLDisconnect(hDbc);
SQLFreeHandle(SQL_HANDLE_DBC, hDbc);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
printf("%s: Cleanup. Fatto.\n", DAM);
}
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:24.



















