1. Feladat: Lista mysql BANK UGYFEL

Hasonló dokumentumok
Elemi alkalmazások fejlesztése Bank I.

ADATBÁZISKEZELÉS KÖZVETLEN ELÉRÉSSEL II...2

Adatbázis-kezelés ODBC driverrel

SDI ALKALMAZÁS I. Workspace / ResourceView / Toolbar / IDR_MAINFRAME. Workspace / ResourceView / Menu / IDR_MAINFRAME

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Készítette: Szabóné Nacsa Rozália

MySql elindítása. Elemi alkalmazások fejlesztése IV. Feladat. Az alkalmazás adatbázisa

Adatbáziskezelés php-ben MySQL adatbáziskezelı rendszert használva

Adatbázis-kezelés ODBC-vel

Elemi alkalmazások fejlesztése IV.

Elemi alkalmazások fejlesztése IV.

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Adatbázisok webalkalmazásokban

OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Adatbázis rendszerek SQL nyomkövetés

Informatika terméktervezőknek

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

B I T M A N B I v: T M A N

Adatbázis-kezelés API hívásokkal. Adatbázis-kezelés ODBC-vel. Adatbázis-kezelés SQL parancsokkal. Adatbázis-kezelés ODBC-vel.

Adatbázis-kezelés. Harmadik előadás

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

Adatbázis használata PHP-ből

Táblakezelés: Open SQL Internal table. Tarcsi Ádám: Az SAP programozása 1.

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

117. AA Megoldó Alfréd AA 117.

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

Access adatbázis elérése OLE DB-n keresztül

1. feladat. Szabóné Nacsa Rozália

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelés ActiveX vezérlıkkel - 1

Adatbázis. AMP! (Apache + MySql + PHP) XAMPP, LAMP, MAMP, WAMP et cetera

Java Programozás 11. Ea: MVC modell

Vizuális programozás gyakorlat

Adatbázis-kezelés ActiveX vezérl kkel 2.rész

3. Osztályok II. Programozás II

SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Programozás II gyakorlat. 4. Öröklődés

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Tábla létrehozása: CREATE TABLE alma( ID INT( 3 ) NOT NULL PRIMARY KEY, Leiras VARCHAR( 100 ) );

Adatbázisok* tulajdonságai

Adatbázis Rendszerek II. 8. Gyakorló környezet

Generikus Típusok, Kollekciók

Adattípusok. Max. 2GByte

Adattípusok. Max. 2GByte

500. CC Megoldó Alfréd CC 500.

Programozás II. ATM példa Dr. Iványi Péter

Bevezetés: az SQL-be

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Cekla. Készítette Doxygen Tue Sep :13:44

Szabóné Nacsa Rozália. Feladat. Készítsünk el egy üres FormView alapú alkalmazást és építsünk köré egy súgó környezetet.

Hozzunk létre két rekordot a táblában, majd véglegesítsünk (commit):

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

Programozás C++ -ban 2007/4

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

Egységes és objektumközpontú adatbázis-kezelés (2. rész)

Szoftvertechnolo gia gyakorlat

Osztály és objektum fogalma

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE) október október 22. Adatbázisok 1 / 14

0. Megoldó Manó 0. Programozás alapjai 2. (inf.) pót zárthelyi gyak. hiányzás: 2 n/kzhp: n/11,5. ABCDEF IB.028/2.

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

Bevezetés a programozásba 2

Adatbázis Rendszerek II. 2. Gyakorló környezet

Számítógépes grafika

Pénzügyi algoritmusok

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

Extrémen brutál, gyors talpaló PHP nyelvhez (database). v2.1

JavaServer Pages (JSP) (folytatás)

Entity Framework + LINQ oktatási segédlet

Vizuá lis prográmozá s

Az SQL*Plus használata

Programozás II gyakorlat. 7. Példák a polimorfizmus alkalmazásaira

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN

OOP: Java 4.Gy: Java osztályok

500. AA Megoldó Alfréd AA 500.

Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

Adatbázis kezelés Delphiben. SQL lekérdezések

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet

Eseményvezérelt alkalmazások

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben

Objektumorientált programozás C# nyelven III.

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Elemi alkalmazások fejlesztése III.

Web-technológia PHP-vel

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Átírás:

. Feladat: Lista Készítsünk el egy olyan egy dokumentumos (SDI) alkalmazást, amely alkalmas a mysql adatbáziskezel vel létrehozott BANK adatbázisunk UGYFEL táblájának megjelentetésére.

UGYFEL tábla refszam 5555 3333 6666 4444 nev Kovács Anna Kis Péter Nagy Sára Nagy Pál Kiss Katalin Nagy Katalin cim 3434 Alma u. 8. 34 Cseresznye u. 7. 6666 Meggy u.. 43 Körte u. 3. Barack u. 7. 7878 Szilva u. 3. status magán üzleti magán magán üzleti üzleti refszam: nev: cim: status: INT(4) PRIMARY KEY NOT NULL VARCHAR(0) NOT NULL VARCHAR(30) NOT NULL CHAR(8) NOT NULL UGYFEL tábla 3 4 Az UGYFEL táblát létrehozó MySQL parancsok: create database bank; use bank; create table ugyfel (refszam int(4) primary key not null, nev varchar(0) not null, cim varchar(30) not null, status char(8) not null); describe ugyfel; Az UGYFEL tábla felépítése Field Type Null Key Default Extra refszam int(4) PRI 0 nev varchar(0) cim varchar(30) status varchar(8)

El készületek A zöld szemafor jelzi, ha fut a MySQL szerver. Projekt létrehozása 3 4 5 6 3

Projekt létrehozása 3 Projekt létrehozása 4

Projekt létrehozása 3 Projekt létrehozása 4 3 4 5

Projekt létrehozása 5 3 Projekt létrehozása 6 CListView 6

Projekt információ 3 Ugyfel.h class Ugyfel { public: int Refszam() const; CString Nev() const; CString Cim() const; CString Status() const; void SetRefszam( int i); void SetNev(CString s); void SetCim(CString s); void SetStatus(CString s); Ugyfel(); virtual ~Ugyfel(); protected: int refszam; CString nev; CString cim; CString status; ; Az UGYFEL osztály refszam 5555 3333 6666 4444 nev Kovács Anna Kis Péter Nagy Sára Nagy Pál Kiss Katalin Nagy Katalin Korábbi ismereteinkre támaszkodva hozzuk létre az Ugyfel osztályt. cim 3434 Alma u. 8. 34 Cseresznye u. 7. 6666 Meggy u.. 43 Körte u. 3. Barack u. 7. 7878 Szilva u. 3. status magán üzleti magán magán üzleti üzleti 7

Insert/New Class Ugyfel: Saját osztály létrehozása Ugyfel: Adattagok megadása 3 4 7 5 6 8

Ugyfel: Metódusok megadása 3 4 7 5 6 Projekt felkészítése a MySQL adatabáziskezel használatára - A Library Files resource mappa létrehozása. 3 4 5 9

Projekt felkészítése a MySQL adatabáziskezel használatára - A mysql++ beillesztése a Library Files mappába. 3 6 4 5 7 Projekt felkészítése a MySQL adatabáziskezel használatára - 3 A mysql és a mysql++ include fájlok elérésének biztosítása. 4 3 5 6 C:\mysql\include.c:\mysql\mysql\include 7 0

LibMySQL kiválasztása Legyen futtatható a LIBMYSQL.dll könyvtár! LibMySQL.dll csak futtatáshoz LibMySQL.dll nyomkövetéshez LibMySQL átmásolása A megfelel a LIBMYSQL.dll fájlt programunk futtatásához át kell másolnunk: vagy: az alkalmazásunk alkönyvtárába. vagy a windows/system alkönyvtárba.

A mysql++ header-fájl beillesztése a dokumentum osztályba BankDoc.h #endif // _MSC_VER > 000 #include <mysql++> class CBankDoc : public CDocument Kommunikáció az adatbázissal. Kapcsolat kiépítése. SQL parancs összeállítása 3. Lekérdezés végrehajtása 4. Eredmény elemek lekérése és megjelenítése 5. Kapcsolat bontása

Kapcsolat az adatbázishoz - El készületek // Implementation BankDoc.h public: void ReleaseDataBase(); void ConnectDataBase(CString s); virtual ~CBankDoc(); protected: Connection* con; Kapcsolat az adatabázishoz - El készületek BankDoc.h // Implementation public: void ReleaseDataBase(); void ConnectDataBase(CString s); virtual ~CBankDoc(); protected: Connection* con; BankDoc.cpp void CBankDoc::ConnectDataBase(CString s) { con = new Connection(s); void CBankDoc::ReleaseDataBase() { if (con>0) delete con; 3

Lekérdezés a rákapcsolódás után. Létrehozunk Query tipusú query objektumot. Query query = con->query();. A query objektumban összeálítjuk az SQL parancsot. query << "select * from ugyfel order by refszam"; 3. Végrehajtatjuk a lekérdezést és az eredményt tároljuk. Result res = query.store(); 4. A Result osztály iterátorával kiolvasgatjuk az eredményt. CListCtrl list; Row row; Result::iterator iter; int j=0; for (iter = res.begin(); iter!= res.end(); iter++) { row = *iter; list.insertitem(j,row[0]); list.setitemtext(j,,row[]); j++; A dokumentum osztály adatbázis-kezelést támogató adattagjai protected: Result res; Connection* con; Result::iterator iresult; // az eredmény // a kapcsolat // az eredményt bejáró iterátor iresult 4

A dokumentum osztály adatbázis-kezelést támogató metódusai ConnectDataBase(CString s) Összekapcsolja programunkat az adatbázissal. ReleaseDataBase() Bontja az adatbázis kapcsolatot. ExecuteQuery(CString q) Végrehajtja a lekérdezést és tárolja az eredményt. Count() Visszaadja az eredmény rekordok számát. GetCurrentItem(Ugyfel &uf) Visszaadja az aktuális ügyfél adatait. MoveFirst() Rááll az eredmény els rekordjára. MoveNext() Rááll az aktuális ügyfélt követ rekordra. Dokumentum osztály: ExecuteQuery(CString q) BankDoc.h public: bool ExecuteQuery(CString q); BankDoc.cpp bool CBankDoc::ExecuteQuery(CString q) { try { Query query = con->query(); query << q; res = query.store(); catch (BadQuery er){ cerr << "Error: " << er.error << endl; return false; iresult=res.begin(); return true; Worksapce/ClassView/Jobb egérfül/ Add Member Functions Végrehajtja a q stringben megadott lekérdezést és tárolja az eredményt. 5

Dokumentum osztály: Count() BankDoc.h public: int Count(); Worksapce/ClassView/Jobb egérfül/ Add Member Functions BankDoc.cpp int CBankDoc::Count() { return res.end() - res.begin(); Visszaadja az eredményül kapott rekordok számát. Dokumentum osztály: GetCurrentItem(Ugyfel &uf) BankDoc.h public: void GetCurrentItem(Ugyfel &uf); Worksapce/ClassView/Jobb egérfül/ Add Member Functions BankDoc.cpp void CBankDoc::GetCurrentItem(Ugyfel &uf) { Row row; row=*iresult; uf.setrefszam((int) row[0]); uf.setnev((cstring)row[]); uf.setcim((cstring)row[]); uf.setstatus((cstring)row[3]); Visszaadja az aktuális ügyfél adatait. 6

Dokumentum osztály: MoveFirst() BankDoc.h public: bool MoveFirst(); Worksapce/ClassView/Jobb egérfül/ Add Member Functions BankDoc.cpp bool CBankDoc::MoveFirst() { iresult = res.begin(); if ( iresult == res.end() ) return ( false ); else return ( true ); Rááll az eredmény els rekordjára. A visszatérési érték true,ha van ilyen, false egyébként. Dokumentum osztály: MoveNext() BankDoc.h public: bool MoveNext(); Worksapce/ClassView/Jobb egérfül/ Add Member Functions BankDoc.cpp bool CBankDoc::MoveNext() { if (iresult == res.end()) return ( false ); iresult++; if (iresult == res.end()) return ( false ); return true; Rááll az aktuális ügyfélt követ rekordra. A visszatérési érték true, ha van ilyen, false egyébként. 7

Nézet osztály - CBankView CBankView CBankDoc void CBankView::OnInitialUpdate() { CBankDoc* pdoc = GetDocument(); pdoc->connectdatabase("bank"); A nézetosztályból a dokumentumosztály metódusait a GetDocument()-en keresztül érhetjük el. Lista típus WS_VISIBLE: Az ablak azonnal legyen látható WS_CHILD: Az ablak legyen gyerekablak LVS_REPORT: A lista legyen táblázat LVS_SINGLESEL: Egyszerre csak egy listaelemet lehet kiválasztani 8

Lista típus MSDN használata Lista típus beálltása: PreCreateWindow BOOL CBankView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs cs.style=ws_visible WS_CHILD LVS_REPORT LVS_SINGLESEL; return CListView::PreCreateWindow(cs); typedef struct tag CREATESTRUCT { LPVOID lpcreateparams; HANDLE hinstance; HMENU hmenu; HWND hwndparent; Int cy; Int cx; Int y; Int x; LONG style; LPCSTR lpszname; LPCSTR lpszclass; DWORD dwexstyle; CREATESTRUCT; 9

A lista kitöltését támogató metódusok void CBankView::FillHeader() Felépíti a listánkat. void CBankView::FillData() Kitölti a listánkat az adatbázis adataival. FillHeader FillData GetListCtrl () A CBankView osztályhoz tartozó listát (melynek típusa CListCtrl) a GetListCtrl() metóduson keresztül érhetjük el. vagy: GetListCtrl()->InsertColumn(,"Refszám",LVCFMT_LEFT,00); vagy: CListCtrl* plist = &GetListCtrl(); plist->insertcolumn(,"refszám",lvcfmt_left,00); 0

Nézet osztály: FillHeader() BankView.h public: void FillHeader(); Worksapce/ClassView/Jobb egérfül/ Add Member Functions BankView.cpp void CBankView::FillHeader() { CListCtrl* plist = &GetListCtrl(); plist->setextendedstyle ( LVS_EX_FULLROWSELECT LVS_EX_GRIDLINES LVS_EX_HEADERDRAGDROP); plist->insertcolumn(,"refszám",lvcfmt_left,00); plist->insertcolumn(,"név",lvcfmt_left,00); plist->insertcolumn(3,"cim",lvcfmt_left,00); plist->insertcolumn(4,"státusz",lvcfmt_left,00); MSDN használata

Nézet osztály: FillData() BankView.h public: void FillData(); Worksapce/ClassView/Jobb egérfül/ Add Member Functions BankView.cpp void CBankView::FillData() { Nézet osztály: FillData() BankView.cpp void CBankView::FillData() { Ugyfel uf; CListCtrl* plist= &GetListCtrl(); CBankDoc* pdoc = GetDocument(); pdoc->executequery("select * from ugyfel;"); pdoc->movefirst(); for (int i=0; i<pdoc->count(); i++){ pdoc->getcurrentitem(uf); CString str; str.format("%d",uf.refszam()); plist->insertitem(i,str); plist->setitemtext(i,,uf.nev()); plist->setitemtext(i,,uf.cim()); plist->setitemtext(i,3,uf.status()); pdoc->movenext();

BankView.cpp Rákapcsolódás az adatbázisra Nézet osztály: OnInitialUpdate() void CBankView::OnInitialUpdate() { CListView::OnInitialUpdate(); // TODO: You may populate your ListView with items by directly accessing // its list control through a call to GetListCtrl(). CBankDoc* pdoc = GetDocument(); pdoc->connectdatabase("bank"); FillHeader(); FillData(); BankView.cpp Lekapcsolódás az adatbázisról Nézet osztály: OnInitialUpdate() void CBankView::OnFinalRelease() { // TODO: Add your specialized code here and/or call the base class GetDocument()->ReleaseDataBase(); CListView::OnFinalRelease(); 3

MySQL 4