Database programming in VC + + :applying ODBC API

Σχετικά έγγραφα
Προγραμματισμός ΙΙ (Java) 6. Διαχείριση δεδομένων

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΠΡΟΤΥΠΑ. ΠΑΡΑ ΕΙΓΜΑ ηµιουργία πρότυπου στοίβας (stack) και στη συνέχεια δηµιουργία µιας στοίβας σηµείων.

Ασφάλεια σε χώρους αναψυχής: Ένα σύστημα από έξυπνα αντικείμενα

Δομές Δεδομένων - Εργαστήριο 2. Λίστες

24ος ΠΑΝΕΛΛΗΝΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Προγραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Research of Han Character Internal Codes Recognition Algorithm in the Multi2lingual Environment

2 η Εργαστηριακή Άσκηση

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ

databases linux - terminal (linux / windows terminal)

Διδάσκων: Παναγιώτης Ανδρέου

Ανάπτυξη διαδικτυακών εφαρμογών με την Python Το εργαλείο Flask

ΕΠΛ 342 Βάσεις εδοµένων

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

, Evaluation of a library against injection attacks

Δυναμική μνήμη με πίνακες και λίστες

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Περιεχόμενα. Πρόλογος ΜΕΡΟΣ Α

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Μεθόδων Επίλυσης Προβλημάτων

Δομές Δεδομένων & Αλγόριθμοι

Προγραμματισμός Ι (ΗΥ120)

Lab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1

double sum(double a, double b) { return(a+b); } double my_avg(double a, double b) { return(sum(a, b)/2.0); }

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ

Αντικειμενοστρεφής Προγραμματισμός

12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ. υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string

Αριθμητικοί αλγόριθμοι

( Boats)) ( Tempsids, bid. sname. Boats. Boats. Boats. (Reserves)/ > Reserves. Interlake' Sailors) ...

Congruence Classes of Invertible Matrices of Order 3 over F 2

10 η Διάλεξη Python Βάσεις δεδομένων στη python

Lab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1

Προγραμματισμός Υπολογιστών με C++

ΠΑΝΔΠΙΣΗΜΙΟ ΜΑΚΔΓΟΝΙΑ ΠΡΟΓΡΑΜΜΑ ΜΔΣΑΠΣΤΥΙΑΚΧΝ ΠΟΤΓΧΝ ΣΜΗΜΑΣΟ ΔΦΑΡΜΟΜΔΝΗ ΠΛΗΡΟΦΟΡΙΚΗ

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

Συµβολοσειρές - Strings

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

B. Ενσωμάτωση Ιθαγενών Μεθόδων

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής

Προγραμματισμός Υπολογιστών με C++

C: Από τη Θεωρία στην Εφαρμογή

Απάντηση. // We write in a header file named my_header.h #ifndef my_header_h #define my_header_h #define divides(x,y) (((y)%(x)==0)?

2 using namespace s t d ; 4 { 12 int t= x ; 6 x=y ; 7 y=t ; 8 } 9 11 { 13 x= y ; 14 y=t ; 15 } {

Περιγραφή συστήματος «BankAccount»

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Β' Περιόδου Θέµα 1. (α')

Αντικειμενοστρεφής Προγραμματισμός

SOAP API. Table of Contents

Reading Order Detection for Text Layout Excluded by Image

IPSJ SIG Technical Report Vol.2014-CE-127 No /12/6 CS Activity 1,a) CS Computer Science Activity Activity Actvity Activity Dining Eight-He

API: Applications Programming Interface

Εγχειρίδιο Συναρτήσεων. Socket *sopen(const int type, const int protocol, const char *host, const char *service)

Διάλεξη 14: Δομές Δεδομένων ΙΙI (Λίστες και Παραδείγματα)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large)

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Ευάγγελος Γ. Ούτσιος Θεόδωρος Γ. Λάντζος Διάλεξη Νο8

02 Αντικειμενοστρεφής Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

ΕΠΛ131 Αρχές Προγραμματισμού

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα:

Οντοκεντρικός Προγραμματισμός

Technical Research Report, Earthquake Research Institute, the University of Tokyo, No. +-, pp. 0 +3,,**1. No ,**1

Εγκατάσταση λογισμικού και αναβάθμιση συσκευής Device software installation and software upgrade

Εργαστήριο βάσεων δεδομένων. MySQL Stored Procedures

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

Σημειώσεις όγδοης εβδομάδας

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Journal of the Graduate School of the Chinese Academy of Sciences. Application Dependent Software. Standard Application Components.

Η γλώσσα προγραμματισμού C

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

ΠΕΡΙΛΗΨΗ. Είναι γνωστό άτι καθημερινά διακινούνται δεκάδες μηνύματα (E~mail) μέσω του διαδικτύου

Πώς εκτυπώνουμε μία λίστα εγγραφών από μία Access database (γενικός τρόπος)

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Copyright 2007 Ramez Elmasri and Shamkant B. NavatheΕλληνικήΈκδοση ίαυλος

Δείκτες σε συναρτήσεις. Προγραμματισμός II 1

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

POINTERS, AGGREGATION, COMPOSITION

ΠΑΝΔΠΗΣΖΜΗΟ ΠΑΣΡΩΝ ΠΟΛΤΣΔΥΝΗΚΖ ΥΟΛΖ ΣΜΗΜΑ ΗΛΕΚΣΡΟΛΟΓΩΝ ΜΗΥΑΝΙΚΩΝ & ΣΕΥΝΟΛΟΓΙΑ ΤΠΟΛΟΓΙΣΩΝ

Η γλώσσα προγραμματισμού C Συνδεδεμένες Λίστες

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή

ΑΝΑΠΤΥΞΗ ΔΙΑΔΡΑΣΤΙΚΗΣ ΙΣΤΟΣΕΛΙΔΑΣ ΠΑΡΑΓΓΕΛΙΩΝ ΛΙΑΝΙΚΗΣ ΣΕ ΕΡΓΟΣΤΑΣΙΟ

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

(C) 2010 Pearson Education, Inc. All rights reserved.

Study of urban housing development projects: The general planning of Alexandria City

: Monte Carlo EM 313, Louis (1982) EM, EM Newton-Raphson, /. EM, 2 Monte Carlo EM Newton-Raphson, Monte Carlo EM, Monte Carlo EM, /. 3, Monte Carlo EM

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους:

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

(Διαφάνειες Νίκου Βιδάκη)

ΕΠΛ 012. JavaScripts

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

Εκφωνήσεις ασκήσεων εργαστηρίου 1

Ζητήματα Σχεδίασης Λογισμικού Πελάτη

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Vol. 31,No JOURNAL OF CHINA UNIVERSITY OF SCIENCE AND TECHNOLOGY Feb

Transcript:

15 20 6 Vol. 20 No. 6 2002 12 Journal of Southeast Guizhou National Teacher s College Dec. 2002 VC + + ODBC API ( 550025) [ ] ODBC SQL, ODBC. ODBC API, VC + + ODBC API, Windows ODBC API. [ ] ODBC ;Visual C + + ; ;Windows [ ] TP312 [ ] A [ ] 1002-6991(2002) 06-0015 - 05 Database programming in VC + + :applying ODBC API XU Hua - rong (Staff room of Computer Science,Department of Basic Science, Guizhou University, Guiyang 550025,China) Abstract: ODBC is a kind of programming interface used by SQL. The application of ODBC can avoid the complication that the programmers meet when they try to handle the Data Source. This essay provides a general programming method of ODBC API. It indicates the programming method and tips of Database application used by ODBC API in Windows environment through programming a simple class orienting to the application of Database in VC + + by applying ODBC API directly. Keywords :ODBC ;visual C + + ;database ;programming in windows 1 ODBC API Viaual C + + ODBC API,MFC ODBC,DAO,OLEDB,ADO.,,. ODBC(Open DataBase Connectivity),,ODBC API, API ODBC. ODBC,. ODBC,,,ODBC. 2 ODBC API 2. 1, SQLALLocHandle SQLAllocEnv.,, SQLAllocHandle SQLAllocConnect. # include sql. h SQLHENV m henv ; SQLAllocHandle(SQL HANDLE ENV,NULL, &m henv) ; SQLAllocEnv( &m henv) ; SQLAllocEnv SQLAllocConnect 1. 0 ODBC. ODBC3. 0, SQLAllocHandle,, SQLAllocEnv. 2,3 SQLAllocConnect SQLAllocStmt. [ ] 2002-07 - 28 [ ] (1976 - ),,,.

16 2002 12 2. 2, SQLAllocHandle SQLAllocConnect. SQLHDBC m hdbc ; SQLAllocHandle(SQL HANDLE DBC,m henv, &m hdbc) ; SQLAllocConnect(m henv, &m hdbc) ; 2. 3, ODBC SQL SQL,. SQLHSTMT m hmtst ; SQLAllocHandle(SQL HANDLE STMT,m hdbc, &m hstmt) ; SQLAllocStmt (m hdbc, &m hstmt) ; 2. 4 SQL SQLExecDirect SQLPrepare SQLExecute SQL. SQLExecDirect,SQLExecute SQL,, SQLPrepare, SQL SQLExecute. 2. 5 SQL,. SQL, SQLBindCol SQL, SQLFetch. SQLFetch,,,, SQLFetchscroll. 3 :, Access, ODBC.,Access db1 usrdb mysql. h id 9 # ifndef MYSQL H usename 10 grade 4 depaname 10 speciname 14 # define MYSQL H # include odbcinst. h class CMysql { CMysql () {Init () ; CMysql (CString strconn) {Init () ;Connect (strconn) ; ΠΠ CMysql () ; ΠΠ void Init (void) ; ΠΠ void Close(void) ; ΠΠ int ExeSql (LPCSTR) ; ΠΠ SQL void GetError(CString&) ΠΠ SQL int Connect (LPCSTR) ; ΠΠ ODBC void DataBindRequ(void) ; ΠΠ int Fetch(void) ; ΠΠ

6 :VC + + ODBC API 17 # define NAME LEN 10 # define CUSTID LEN 10 # define GRADE LEN 4 # define DEPA LEN 10 # define SPECI LEN 14 private : void DispError(void) ; ΠΠ SQL private : TUCHAR 3 m psql ; TUCHAR 3 m perrormsg ; SQLHENV m henv ; SQLHDBC m hdbc ; SQLHSTMT m hstmt ; ΠΠ SQL long int cbgrade,cbdepa,cbspeci,cbname,cbcustid ; char szgrade[ GRADE LEN],szDepa[DEPA LEN],szSpeci[ SPECI LEN] ; char szcustid[ CUSTID LEN],szName[NAME LEN] ; ΠΠ ; # endif mysql. cpp # include afx. h # include mysql. h # include < sql. h > # include < sqlext. h > # include < srv. h > CMysql : : CMysql () { void CMysql : : Init (void) { m perrormsg = 0 ; m psql = 0 ; m perrormsg = new TUCHAR[ SQL MAX MESSAGE LENGTH - 1 ] ; m hdbc = NULL ; m henv = NULL ; m hstmt = NULL ; ΠΠ SQL int CMysql : : ExeSql(LPCSTR strsql) { if ( m psql) { delete m psql ; if (m hstmt! = NULL) { Close () ; m psql = nev TUCHAR[ strlen(strsql) + 1 ] ; strcpy( (char 3 ) m psql,strsql) ; int sqlret = SQLExecDirect(m hstmt,m psql,sql NTS) ; if ( (sqlret!= SQL SUCCESS &&sqlret!= SQL SUCCESS WITH INFO) ) { DispError() ; return sqlret ; int CMysql : :Connect(LPCSTR strsrc)

18 2002 12 { int mconn = SQLAllocEnv( &m if (mconn = = SQL henv) : ΠΠ { mconn = SQLAllocConnect(m henv, &m hdbc) ; ΠΠ if (mconn = = SQL { SQLSetConnectOption(m hdbc,sql LOGIN TIMEOUT,5) ; ΠΠ TUCHAR 3 pstrsrc = new TUCHAR[ strlen(strsrc) + 1 ] ; TUCHAR 3 pstrusr = new TUCHAR ; TUCHAR 3 pstrpasswd = new TUCHAR ; strcpy( (char 3 ) pstrsrc,strsrc) ; mconn = SQLConnect(m hdbc,pstrsrc,sql NTS,pstrUsr,SQl NTS,pstrpasswd,SQL NTS) ; if ( (mconn = = SQL (mconn = = SQL SUCCESS WITH INFO) ) { mconn = SQLAllocStmt(m hdbc, &m hstmt) ; ΠΠ delete pstrsrc ; delete pstrusr ; delete pstrpasswd ; else { DispError() ; else { DispError() ; return mconn ; void CMysql : :DispError(void) { CString strerror ; GetError(strError) ; if (! strerror. IsEmpty() ) { MessageBox(NULL,strError,!,MB OK) ; void CMysql : : GetError(CString& strmsg) { TUCHAR 3 psqlsta = new TUCHAR[ SQL MAX MESSAGE LENGTH - 1 ] ; SDWORD Naerror ; SWORD strerrornsg ; SQLError(m henv,m hdbc,m hstmt,psqlsta, &Naerror,m perrormsg, SQL MAX MESSAGE LENGTH - 1, &strerrormsg) ; delete psqlsta ; strmsg = m perrormsg ; int CMysql : :Fetch(void) { int sqlret = SQLFetch(m hstmt) ; if ( (sqlret! = SQL SUCCESS &&sqlret! = SQL SUCCESS WITH INFO) ) DispError() ; return sqlret ; void CMysql : :Close(void) { if (m hstmt! = NULL) { SQLFreeStmt (m hstmt,sql DROp) ; ΠΠ

6 :VC + + ODBC API 19 SQLAllocStmt (m hdbc, &m hstmt) ; ΠΠ void CMysql : :DataBindRequ(void) ΠΠ { SQLBindCol (m hstmt,1,sql C CHAR,szCustID,CUSTID LEN, &cbcustid) ; SQLBindCol (m hstmt,2,sql C CHAR,szName,NAME LEN, &cbname) ; SQLBindCol (m hstmt,3,sql C CHAR,szGrade,GRADE LEN, &cbgrade) ; SQLBindCol (m hstmt,4,sql C CHAR,szDepa,DEPA LEN, &cbdepa) ; SQLBindCol (m hstmt,5,sql C CHAR,szSpeci,SPECI LEN, &cbspeci) ; # include mysql. cpp void main() { CMysql sqld( db1 ) ; ΠΠ if (sqld. ExeSql ( select id,usename,grade,depaname,speciname from usrdb ) = = SQL { sqld. DataBindRequ() ; while (sqld. Fetch() = = SQL { 4 ΠΠ printf ( %s, %s, %s, %s, %s \ n,sqld. szcustid,sqld. szname,sqld. szgrade,sqld. szdeps,sqld. szspeci) ; ΠΠ sqld. Close() ; ΠΠ, ODBC API., SQL, CMysql ExeSql,., ODBC, MFC CRecordSet. [ ] [1 ],. Visual C + + 6. 0 [M]. :,2000. [2 ] ( ) Gulutzan,P.,Pelzer,T.,. SQL - 3 [M]. :,2000. [3 ] ( ) Davidj. Kruglinski. Visual C + + ( ) [M]. :,1996.