Miután feltelepítettük a MySQL Workench (w) programot belefutunk az első bug-ba. A telepítésél létrehozta a program a root felhasználót az általunk megadott jelszóval. De nem illik root-ként belépni és garázdálkodni, tehát kell egy korlátozott jogú felhasználó is. A w nem hagyja létrehozni az új user-t. Imígyen kerüljük meg a problémát: CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'password'. Részletes leírás a MySQL account kezeléséről itt.
Ezután már tudunk jogokat adni a felhasználónak a server administration részben a következő módon:
- root-ként létrehozzuk az adatbázist
- Users and Privileges
- jobbra fent a létrehozott felh. kiválasztása
- Schema Privileges
- jobbra lent Add Entry
- megadjuk a host-ot, esetünkben localhost
- és végül a jogokat
Miért csak localhost? Mert a labor program azon a gépen fog futni, ahol az adatbázis van.
Bug no. 2: ez is MySQL, de más irányból. Ha az ODBC drivernél ( amit úgyis fel kell paraméterezni) a details rész végén nem adom meg a kódlapot, akkor a SELECT utasítás programból végrehajtva kijelenti, hogy nem találja a táblában a mezőket. Cp1250, Utf8, stb. beállítható egyéni izlés szerint.
Éééééés, dobpergés. Létrehozzuk az első táblát. Javaslom kézzel beírni az adatokat, gyakorolni sosem árt.
CREATE TABLE `felhasznalok` (
`felh_nev` varchar(45) NOT NULL,
`jelszo` varchar(45) DEFAULT NULL,
`nev` varchar(45) DEFAULT NULL,
`szint` enum('felhasználó','validáló','admin') DEFAULT NULL,
`aktiv` enum('igen','nem') DEFAULT NULL,
PRIMARY KEY (`felh_nev`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1250$$
A mezőknél meghagytam a default varchar(45)-öt, minek bonyolítsam az életet. Azért varchar és nem char, mert a varchar a tartalom tényleges hosszát foglalja le, a char pedig a mező teljes hosszát.
A felh_nev egyedi, - erre majd a programban figyelni kell - így használhatjuk indexként.
Szint,aktiv mezők: az enum adattípus olyan mint egy tömb.
CREATE TABLE `test`.`aaa` (
`mezo` enum('a','b','c') NOT NULL,
`nev` varchar(45) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1250;
insert into aaa values ('a','nev_1'),('c','nev_3'),('b','nev_2'),('a','nev_1');
select mezo+0,mezo,nev from aaa;
1, 'a', 'nev_1'
3, 'c', 'nev_3'
2, 'b', 'nev_2'
1, 'a', 'nev_1'
Látható, hogy a mezo értékét visszakaphatjuk szövegként, és számként (tömb elem indexe) is. Ez igen nagy segítség, ha mondjuk biztonsági szinthez akarjuk kötni a menüpontok megjelenítését, és ugyanakkor ki is írjuk a felhasználói szintet.
Legközelebb netbeans beállítások.