Sinun suunnitelmat ovat aivan liian monimutkaisia toteuttaa, kun asiat voi tehdä paljon yksinkertaisemmin SQL-tietokannoilla. Ei ne SQL-tietokannat ole tehty ohjelmoijien kiusaksi vaan avuksi. Valitettavasti en osaa Javaa riittävän hyvin, että osaisin antaa valmista JDBC-koodia, jonka vain kopioisit järjestelmääsi, mutta SQL-osion voin antaa. Tai ainakin ideat, kuinka toteuttaa sen. Siis tiedostojärjestelmäsi ohjelmointiin kuluu ainakin pari viikkoa, niin miksi et käyttäisi sitä aikaa uuden tekniikan oppimiseen.
Itse en kommentoi, onko mukavampi käyttää MySQL:llää, PostGreSQL:llää vai Oraclea, mutta ehdottamasti kannattaa käyttää SQL:llää.
Kaikissa SQL:llissä luodaan taulut. Taulut voi luoda kätevästi PHPMyAdminin avulla tai nopeammin suoraan SQL-käskyllä. PHPMyAdminkin luo taulut SQL-käskyllä.
CREATE TABLE kurssiarvio (
nimi CHAR(255) ,
osoite CHAR(255),
postinro INTEGER,
ppaikka CHAR(255),
taitotaso CHAR(255),
osaanhtml INTEGER,
osaanphp INTEGER,
eteneminen CHAR(255)
)
char:n sijasta saattaa joissakin (Esim. MySQL:ssä) olla Esim. VARCHAR, mutta periaate on sama.
Kyseinen käsky on sopiva SQLite:lle. Tässä taulu on kurssiarvio.
Hakeminen taulusta tapahtuu myös yksinkertaisesti:
SELECT nimi, osoite, postinro, ppaikka, taitotaso, osaanhtml, osaanphp, eteneminen FROM kurssiarvio
Jos haluaa rajata kyselyä, niin sen voi laittaa esim...
SELECT nimi, osoite, postinro, ppaikka, taitotaso, osaanhtml, osaanphp, eteneminen FROM kurssiarvio WHERE nimi="peran"
Toi peran, jos se syötetään käyttäjän toimesta, tulee huolehtia SQL-injektiosta, koska käyttäjä voi antaa ilman sitä käskyn nimeksi...
peran"; DROP TABLE kurssiarvio; "
, jolloin siis tuhoutuu kurssiarvio taulu, kun se dropataan pois. Siis tämä kohta on ainoa vaaran paikka SQL:llää käytettäessä. Toisin sanoen SQL:ssä ei kannata missään tapauksessa luottaa käyttäjän antamiin syötteisiin, mutta tämähän pitää olla yleensäkin internetissä olevien tietojen kanssa.
Voisin neuvoa, kuinka PHP:ssä kyseinen SQL injektio torjutaan. Yleisesti myös Java:ssa SQL-injektio torjutaan antamalla käyttäjän syöte funktion läpi, joka poistaa SQL-injektion mahdollisuuden. Kyseiset funktiot kuuluvat vakio SQL-kirjastoihin, joten niitä ei tarvitse itse keksiä.
No, joo sitten lisääminen tapahtuu seuraavasti:
INSERT INTO kurssiarvio(nimi, osoite, postinro, ppaikka, taitotaso, osaanhtml, osaanphp, eteneminen) VALUES ("nimi", "osoite", 00010, "ppaikka", "taitotaso", 1, 1, "eteneminen")
Tämänkään ymmärtämisessä ei tarvita rakettitiedettä. Lisäksi käyttäjään ei tässäkään kannata luottaa, vaan tämänkin käskyn yhteydessä tulee ehkäistä SQL-injektio.
Lisäksi Yleisesti tarvittavia SQL-käskyjä ovat DELETE ja SET. Deletellä voit poistaa rivejä taulusta ja SET:llä voit muuttaa taulussa olevien tietueiden arvoja.
Tässä siis tuli pienellä vaivalla kerrottua pikaopas SQL:llään. SQL:ssä on kuitenkin optimoidut toiminnot, joten se toimii varmasti nopeammin, kuin tiedostohirvitys. Lisäksi päänvaivaa säästää huomattavasti, kun ei tarvitse miettiä tiedostoviidakkoa, ja yrittää saada siihen logiikkaa.