Java ab felhasználónév csekkolás ha van, már nem hozza létre, hogyan tovább?
private void userscheck() throws SQLException {
String user = view.getpRegistration().getTfUser().getText();
String sql = "SELECT felhasznalonev FROM chat WHERE felhasznalonev ='" +user;
pst = cn.prepareStatement(sql);
if(sql.equals(user)){
System.out.println("van");
}
}
A kapcsolat teljesen jól működik, igazából csak azt a részt nem tudom, hogy mikor megírtam az sql Stringbe a lekérdezést, akkor az if-be, hogy írjam meg azt a részt, ha az sql(vagyis a névellenőrzés) adott értéket mondjuk 1-et, akkor létezik az adott nevű felh. tehát nem hozható létre még egy, a kérdésem mit írjak az if-be? ha lehetne akkor programkódban várnám a választ:P
> ha lehetne akkor programkódban várnám a választ:P
Ha lehetne, akkor olvasd végig a tutorialt, ami bemutatja a PreparedStatement használatát. :P Egyrészt választ kapnál a kérdésedre, másrészt nem vétenél olyan hibát, mint fent, a "+user" környékén.
Például:
"ha az sql(vagyis a névellenőrzés) adott értéket mondjuk 1-et, akkor létezik az adott nevű felh."
Ezt meg fogalmazd át. A fenti lekérdezésed nem 1-et, és nem is más számot fog adni, hanem egy rekord listát, rekordonként egyetlen mezővel (felhasznalonev). Mit szeretnél pontosan kideríteni?
#1 vagyok, javítok:
"Egyrészt választ kapnál a kérdésedre,"
helyett:
"Egyrészt megtudnád, hogyan kell egy lekérdezést lefuttatni és az eredményét feldolgozni,"
az szeretném, hogy adatbázisomba van tárolva x név a hozzá tartozó jelszóval( itt a jelszó most nem számít), ez a része a programnak azt a feladatot látná el, hogy mikor egy felhasználó regisztrálni szeretne, akkor beírja a felh, jelszavát, és ha még nincs olyan akkor megteheti, de ha már van, akkor kap egy hibaüzenetet, hogy már létezik!
String user = view.getpRegistration().getTfUser().getText();
String sql = "SELECT Count(*) FROM chat WHERE felhasznalonev ='" +user+"'";
a user String tárolja az a felhasználónevet, amit emberem megadott, az sql string meg a lekérdezés a táblámból, hogy van -e ilyen.. tehetném ezt felhasználóra szűrve, vagy Count(*) összeszámlálva is, lényegében mindegy, azt nem tudom melyik változom adja vissza azt az értéket, vagyis miből tudom azt kinyerni, hogy a feltett sql utasításomnak az eredménye 1 vagyis van, vagy nulla, vagy felh: = sajt, és mivel a user, vagyis amit megadott sajt volt az is 1 tehát már van, nem adhatod meg, hogy írjam ezt meg?
A fenti Mkyong tutorialban pedig van példa query eredményének feldolgozására, de nyilván nem fedi le az összes lehetőséget. Ilyenkor jó belenézni a ResultSet javadoc-jába, milyen metódusai vannak. Van neki olyan getInt() metódusa, ami oszlopszámot vár paraméterül, vagyis hogy hányadik oszlopból akarsz kiolvasni int-et:
Vigyázat, itt most az indexelés 1-től megy.
Az Mkyong-os példában ott a futtatás és feldolgozás, ő ott getString-el kér ki, azt kell lecserélned a getInt-re.
sikerült végül megoldanom magamtól csak időigényes volt így, így néz ki a teljes kód:
private void userscheck() throws SQLException {
view.getpRegistration().getlMessage().setText("Adja meg felh. és jelszavát (minimum 1 karakter hossz!).");
String user = view.getpRegistration().getTfUser().getText();
String sql = "SELECT felhasznalonev FROM chat";
pst = cn.prepareStatement(sql);
rs = pst.executeQuery();
ResultSetMetaData rsMd = rs.getMetaData();
int Column = rsMd.getColumnCount();
while (rs.next()) {
Object[] file = new Object[Column];
for (int i = 0; i < Column; i++) {
file[i] = rs.getObject(i + 1);
if (file[i].equals(user)) {
view.getpRegistration().getlMessage().setText("Van már ilyen nevű felhasználó!");
cn.close();
}
}
}
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!