Hirdetés
- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
- Milyen videókártyát?
- Szentjánosbogárral venné fel a versenyt a Macbook Neo ellen az Intel
- AMD Navi Radeon™ RX 9xxx sorozat
- Blogjában leplezte le a 12V-2x6 tápkonnektor hibáját a Corsair
- Canon MILC: EOS R és M topik
- Sony MILC fényképezőgépcsalád
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Milyen TV-t vegyek?
- Apple MacBook
- NVIDIA GeForce RTX 5070 / 5070 Ti (GB205 / 203)
-
Fórumok
PROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
Sanyix
őstag
megcsináltam már, de nem elég feltűnő hogy ott több van, és ronda.
-
gaben
aktív tag
-
Sanyix
őstag
Milyen szervert használsz ? Az alkalmazás szerverek általában tudnak autentikációt kezelni.
Ez ugyan geronimo de kiindulásnak jó lehet.
A lényeg az, hogy az index.jsp-d a védett területen (security-realm)-on kívül helyezkedik el és vagy linkkel vagy forward-al átírányít a védett területre. Erre a szerver bejelentkezteti a usert ha az ok továbbdobja a kívánt oldalra, ha nem akkor elutasítja. A védett területen belül vagy sütivel vagy url rewrite-al ellenőrzi, hogy az adott felhasználó már bejelentkezett-e ?
jboss 4.2-t használok. Néztem már ezt a login-configos részt, de semmi használhatót nem találtam arról hogy mi ez a realm. Most a linkeden látom már kb mi lehet, de még mindig nem látom hol van beállítva, hogy ki mit érhet el.
-
td
senior tag
-
td
senior tag
-
td
senior tag
Nem igazán értem mért akarod a visszatérési értéket kezelni. Ha az insert sikeresen lefut akkor úgyis a következő sorra (update) lép. Ha nem (pl kulcs megsértés vagy null érték not null-os mezőbe) kivétel keletkezik akkor pedig rollback így az insertben felvitt rekordo(ka)t eldobja.
Ha szüksége van az insert utáni értékre pld. a kapott id-t tovább kell vinni, akkor vagy tárolt eljárás vagy generator/sequence használata javaslott, természetesen egy tranzakció belül.
Semmi különös okom nincs rá, csak a meglévő kódot minimálisan szerettem volna módosítani. Tranzakciót egyébként nem használok benne, szóval az insert eredménye az benne maradna a táblában (végül is ez csak amolyan demonstráció-progi, nem akarom túlvariálni, mert a lényeg nem ezen van, de még lehet, hogy beleteszem).
Amúgy meg rájöttem (olvastam), hogy egy rs = psmt.executeQuery(), aztán if (rs.next()) is megteszi.
-
td
senior tag
A ps1.execute csak akkor add vissza true-t ha a visszatérési objektum resultset. Mivel az insert nem azt ad vissza igy persze, hogy false.
Setterek: A preparedstatement leküldi az SQL-t a szervernek előkészítésre. Az lefordítja, felkészül. A setterek beállítják a paramétereket, az execute pedig végrehajtja. A korábban említett előnyök mellett nagy hasznát veheted kötegelt adattöltésnél. Ilyenkor query egyszer előkészít, sokszor végrehajt, nagyon gyorsan.
Erre szolgál a tranzakció.
try {
// Disable auto commit
connection.setAutoCommit(false);
// Do SQL updates...
// Commit updates
connection.commit();
} catch (SQLException e) {
// Rollback update
connection.rollback();
}Köszi, ilyen szinten ismerem a settereket. Csak arra lettem volna kíváncsi, hogy mivel véd az SQL injection ellen, de ha így végiggondolom, akkor meg is van a válasz szerintem.
A másikat akkor hogy lehet jól működővé tenni? Merthogy false-ot ad vissza, ha az első eredmény egy update count vagy ha nincs eredménye az SQL-nek.
if (rs.getUpdateCount()) ?
vagy:
if (rs.getMoreResults()) ?
-
td
senior tag
A getInt-nél mi a kivétel:
Én így szoktam
ResultSet ers = plm.executeQuery();
while (ers.next()) {
V_Elem lm = new V_Elem();
lm.setId(ers.getLong("ID"));
}Egy elemnél pedig simán
if (rs.next()) {
}Használd a SET SCHEMA=WHUSER utasítást. Vagy tedd az adataidat az APP sémába (Az a Derby alapértelmezett sémája).
A Insert/Update queryknél használj parametrizált queryt. Átláthatóbb, véd az SQL injekcion ellen.
pld.
PreparedStatement ps = conn.prepareStatement("update akarmi set nev=? where id=?");
ps.setString(1,"Az új név");
ps.setLong(2, 12); // az adott ID
ps.execute();Na megvan a gond. Idézőjelbe kell tenni a mezőneveket is, de oda már nem kell a user neve. Ez preparedStatement-re is igaz.
Viszont újabb probléma lépett fel:
PreparedStatement ps1 = conn.prepareStatement("INSERT INTO \"WHUSER\".\"Orders\" VALUES (?, ?, ?, ?, 0, 0, ?)");
ps1.setString(1, articleID);
ps1.setInt(2, quantity);
ps1.setString(3, customerID);
ps1.setLong(4, totalcost);
ps1.setLong(5, trackID);
if (ps1.execute()) {
...Megfogadván tanácsodat, alkalmaztam az előkészített lekérdezéseket (tényleg, miket csinálnak a háttérben a setterek?), de az if igaz ága valamiért nem fut le. Több ilyen lekérdezésnél is rendben van, de ennél az egynél valami nem tetszik neki. A furcsa viszont az, hogy az INSERT berakja a sort, tehát az execute()-nak nem kéne hamisat visszaadnia...
Ez az if azért fontos, mert az INSERT sikerétől függően kell update-elni is. setLong()-gal BIGINT mezőket állítok be, a többi varchar és integer. -
td
senior tag
A getInt-nél mi a kivétel:
Én így szoktam
ResultSet ers = plm.executeQuery();
while (ers.next()) {
V_Elem lm = new V_Elem();
lm.setId(ers.getLong("ID"));
}Egy elemnél pedig simán
if (rs.next()) {
}Használd a SET SCHEMA=WHUSER utasítást. Vagy tedd az adataidat az APP sémába (Az a Derby alapértelmezett sémája).
A Insert/Update queryknél használj parametrizált queryt. Átláthatóbb, véd az SQL injekcion ellen.
pld.
PreparedStatement ps = conn.prepareStatement("update akarmi set nev=? where id=?");
ps.setString(1,"Az új név");
ps.setLong(2, 12); // az adott ID
ps.execute();Az exception ez:
org.apache.derby.client.am.SqlException: Invalid operation to read at current cursor position.
Ez akkor van, amikor egy sima SELECT * FROM tábla jellegű lekérdezést csinálok. Az rs.getFetchSize() is nullát ad vissza. Viszont ha kiadok előtte egy rs.next()-et, akkor már nem nulla, és kivétel sem keletkezik. És rendesen le is lehet kérni a mezőértékeket, persze ezeket az első sorból adja.
A SET SCHEMA nem működött sajnos. Az APP-be hogyan tudom betenni? A jobb klikk/Properties... lapon nem lehet átállítani a Schema sort, és amikor a táblát létrehoztam, akkor is csak a WHUSER volt kiválasztható (legalábbis az Owner listából).
Ezt próbáltam amúgy:
stmt.execute("SET SCHEMA=WHUSER");
ResultSet rs = stmt.executeQuery("SELECT * FROM \"WHUSER\".\"Stock\" WHERE ArticleID='" + articleID + "'");És ugyanaz lett a kivétel, mint máskor is:
org.apache.derby.client.am.SqlException: Column 'ARTICLEID' is either not in any table in the FROM list or appears within a join specification and is outside the scope of the join specification or appears in a HAVING clause and is not in the GROUP BY list. If this is a CREATE or ALTER TABLE statement then 'ARTICLEID' is not a column in the target table.Csináltam úgy is, hogy a WHUSER-t '-ok közé tettem, de semmi... (kivétel amúgy arra nem volt)
A másik ötletet (parametrizált query) köszi, majd még kipróbálom azt is. Bár most nem az injection a legnagyobb gondom.

-
Sianis
addikt
Egyszerűen semmi különös.A példában simán visszakapsz egy Complex osztályt. Igazából egy Complex osztályt pontosabban egy IComplex interfészt implementáló osztályt. Ha Complex típusú lenne a változó akkor csak Complex típusú példányt adhatnál át, IComplex-ként viszont bármilyen olyan osztályt ami implementálja az IComplex interfészt. Ennek fényében a második fele a kérdésednek egyértelmű.
Egy kis magyarázat :[link]Nagyon szépen köszi!!!

Sianis -
Pinya007
aktív tag
-
gabesz82
őstag
-
KrAt
veterán
Jaja, most hogy mondod, megtaláltam, csak inaktív. Gondolom meg kéne vásárolni

Nincs esetleg vmi egyszerű free progi, amibe be tudom adni a forráskódom, és lefordítja exe-be?
-
Corvin84
csendes tag
Kicsit fáradt vagyok, hogy jobban átnézzem. Lehetne optimálisabb és szebb kódot írni de most csak ennyire futja. Helyenként kicsit elbonyolítod a dolgot. Boolean értéket nem vizsgálunk true vagy false értékre mert önmagában kiértékelhető. A bemeneti értékek ellnőrzése szükséges mert első lefutáskor nem tartalmaz a kérés paramétert.
<%@ page language=''java'' pageEncoding=''ISO-8859-1''%>
<!DOCTYPE HTML PUBLIC ''-//W3C//DTD HTML 4.01 Transitional//EN''>
<html>
<head>
<title>My JSP 'prim3.jsp' starting page</title>
</head>
<body bgcolor=''white''>
<h1>
Prímszám generálás
</h1>
<form action=''prim3.jsp'' method=''post''>
<input type=''text'' name=''kezdet''>
-tól
<br>
<input type=''text'' name=''veg''>
-ig
<br>
<input type=''submit'' value=''elkuld''>
</form>
<hr>
<%
String ks = request.getParameter(''kezdet'');
String vs = request.getParameter(''veg'');
if (ks != null && vs != null) {
int k = Integer.parseInt(ks);
int v = Integer.parseInt(vs);
for (int i = k; i < v; i++) {
boolean nemprim = false;
for (int j = 2; j < (i - 1); j++) {
if ((i % j) == 0) {
nemprim = true;
break;
}
}
if (!nemprim) {
out.println(i + ''. primszam'' + ''<br>'');
}
}
}
%>
</body>
</html>
[Szerkesztve]Köszönöm btotyi!
Időközben nekem is összejött...Nem volt vele semmi gond az enyémmel se igazán,csak a szerver szarakodik (a Te verziód sem megy most épp rajta),de az enyém sem pedig 1órája ment... :S
Mennyiben változik a dolog,ha nem intervallumot adok meg,h 30tól-50ig dobja ki a primeket,hanem a 30. tól az 50. ig!?
Előre is köszönöm!
Bye
Új hozzászólás Aktív témák
-
Fórumok
PROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- Fórumok
- Szoftverfejlesztés
- Java programozás
- (kiemelt téma)
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- LEGO klub
- Motoros topic
- Okos lesz a következő szemüveged
- Milyen videókártyát?
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Szentjánosbogárral venné fel a versenyt a Macbook Neo ellen az Intel
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Interactive Brokers társalgó
- Gyúrósok ide!
- Futás, futópályák
- További aktív témák...
- Lenovo ThinkPad L13 Gen 3 i5-1245U 16GB 256GB FHD+ IPS 1 év teljeskörű garancia
- Samsung Galaxy Xcover 5 64GB, Kártyafüggetlen, 1 Év Garanciával
- Nvidia Quadro M2000/ P2000/P2200/ P4000/ P5000/ RTX 4000/ RTX 5000/ RTX A2000/ RTX 4000 SFF 20GB ADA
- Apple iPhone 16e 128 GB White 100% Akkumulátor 12 hónap Garancia Beszámítás Házhozszállítás
- Xbox Elite Series 2 kontroller 3 hó garancia, számlával!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest








