Salut,
quelqu'un aurait-il un exemple de prog qui utilise une connexion ODBC et recupere les donnes d'une base?
Merci d'avance
Version imprimable
Salut,
quelqu'un aurait-il un exemple de prog qui utilise une connexion ODBC et recupere les donnes d'une base?
Merci d'avance
Voici un programme tres basique qui recupere un entier en SQL avec
les ODBC. Il n'est pas commenté mais avec une doc, tu n'auras aucun problème à comprendre
A++
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122 # include <windows.h> # include <stdio.h> # include <sql.h> # include <sqlext.h> static void geterror( HSTMT ); #define RC_SUCCESS(rc) (((rc)==SQL_SUCCESS) || ((rc) == SQL_SUCCESS_WITH_INFO)) /* env et connection */ SQLHENV Henv ; SQLHDBC Hdbc ; char req0[] = "select A.IDENTITYCOL from X3.ZZBLOB A where A. NUM_0 = 1" ; main () { /* Declaration */ RETCODE rc ; SQLHSTMT hStmt0 ; /* variable de retours Bind */ SQLINTEGER pcb[1] ; SQLINTEGER id ; /* ************************************ */ /* Environement et connection */ rc = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &Henv); if (!RC_SUCCESS( rc )) geterror( SQL_NULL_HSTMT ) ; rc = SQLSetEnvAttr(Henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3, SQL_IS_INTEGER); if (!RC_SUCCESS( rc )) geterror( SQL_NULL_HSTMT ) ; rc = SQLAllocHandle(SQL_HANDLE_DBC, Henv, &Hdbc); if (!RC_SUCCESS( rc )) geterror( SQL_NULL_HSTMT ) ; rc = SQLConnect(Hdbc, "HERCULE2000", SQL_NTS, "X3", SQL_NTS, "tiger", SQL_NTS); if (!RC_SUCCESS( rc )) geterror( SQL_NULL_HSTMT ) ; rc = SQLSetConnectAttr(Hdbc, SQL_ATTR_AUTOCOMMIT, SQL_AUTOCOMMIT_OFF, SQL_IS_UINTEGER); if (!RC_SUCCESS( rc )) geterror( SQL_NULL_HSTMT ) ; rc = SQLSetConnectAttr(Hdbc, SQL_ATTR_TXN_ISOLATION, (SQLPOINTER) SQL_TXN_READ_COMMITTED, SQL_IS_UINTEGER); if (!RC_SUCCESS( rc )) geterror( SQL_NULL_HSTMT ) ; rc = SQLEndTran( SQL_HANDLE_DBC, Hdbc, SQL_COMMIT ) ; if (!RC_SUCCESS( rc )) geterror( SQL_NULL_HSTMT ) ; /* ************************************* */ rc = SQLAllocHandle(SQL_HANDLE_STMT, Hdbc, &hStmt0); if (!RC_SUCCESS( rc )) geterror( SQL_NULL_HSTMT ) ; rc = SQLPrepare( hStmt0, req0, SQL_NTS ) ; if (!RC_SUCCESS( rc )) geterror( hStmt0 ) ; rc = SQLBindCol( hStmt0, 1, SQL_C_SLONG, &id, 0, pcb ); if (!RC_SUCCESS( rc )) geterror( hStmt0 ) ; rc = SQLExecute( hStmt0 ) ; if (!RC_SUCCESS( rc )) geterror( hStmt0 ) ; rc = SQLFetch( hStmt0 ) ; if (!RC_SUCCESS( rc )) geterror( hStmt0 ) ; rc = SQLFreeHandle(SQL_HANDLE_STMT, hStmt0); if (!RC_SUCCESS( rc )) geterror( hStmt0 ) ; /* ************************************* */ /* Deconnection */ rc = SQLEndTran( SQL_HANDLE_DBC, Hdbc, SQL_COMMIT ) ; if (!RC_SUCCESS( rc )) geterror( SQL_NULL_HSTMT ) ; /* ********************************** */ /* c'est fini ! Free stmt */ rc = SQLDisconnect( Hdbc ); if (!RC_SUCCESS( rc )) geterror( SQL_NULL_HSTMT ) ; SQLFreeHandle(SQL_HANDLE_DBC, Hdbc); SQLFreeHandle(SQL_HANDLE_ENV, Henv); return( 0 ) ; } static void geterror( HSTMT hStmt ) { char msg[256] ; /* pointer to message */ RETCODE rc; /* code erreur retour */ char szSqlState[6]; /* etat de retour */ long noError; /* no de message */ short cbmsg; rc = SQLError(Henv, Hdbc, hStmt, szSqlState, &noError, msg, 256, &cbmsg); printf( msg ) ; exit( 0 ); }
merci