16. maj 2006 - 12:15Der er
8 kommentarer og 1 løsning
Oracle select statement
Hej, har følgende sql statement der skal bruges i en java applikation der kører over en oracle database ...
Problemet er jeg skal søge på et navn på et medlem, som ligger som en enkelt streng i databasen, så ligger som fx "Klaus Andersen", og så skal jeg kunne nøjes med at søge efter "Klaus" .. Men hvordan gør jeg dog lige det.. :) .. den virker når jeg søger på det specfikke "Klaus Andersen" ..
Select name, id from members where name = ? order by name;
Fx: SELECT name, id FROM members WHERE name like '%Klaus%'
eller: SELECT name, id FROM members WHERE upper( name) like '%KLAUS%', så du ikke er case-sensitiv. Alt efter antallet af rækker i members-tabellen (fingerpegn: er der mere eller mindre end 100.000 rækker?) skal du lave et function-based index på name feltet.
Hmm ja tak, men har jo ikke lige et specifik navn jeg kan søge på sådan der.. hvad gør man så .. I får lige det hele.. :)
public ArrayList<Member> getMemberByName(String name) throws SQLException { Connection con = DriverManager.getConnection(driverURL, username, password); PreparedStatement st = con.prepareStatement("SELECT name, address, zipcode, city, phone, email, bdate,licensnumber, dtfnumber, sex, trainingtype FROM Member WHERE name = ? ORDER BY name"); st.setString(1,name); ResultSet rs
public ArrayList<Member> getMemberByName(String name) throws SQLException { Connection con = DriverManager.getConnection(driverURL, username, password); PreparedStatement st = con.prepareStatement("SELECT name, address, zipcode, city, phone, email, bdate,licensnumber, dtfnumber, sex, trainingtype FROM Member WHERE upper(name) like upper('%String name%') ORDER BY name"); st.setString(1,name); ResultSet rs
Måske du lige skal rette det lidt til omkring ('%String name%')
SELECT name, address, zipcode, city, phone, email, bdate,licensnumber, dtfnumber, sex, trainingtype FROM Member WHERE name = '%String name%' ORDER BY name .. sådan du siger... det fungerer desværre ikke lige .. hvad gør jeg forkkert.. ?
Ja, en Java-mand. Men nu tillader jeg mig alligevel at gætte løs: Måske 1) public ArrayList<Member> getMemberByName(String name) throws SQLException { Connection con = DriverManager.getConnection(driverURL, username, password); PreparedStatement st = con.prepareStatement("SELECT name, address, zipcode, city, phone, email, bdate,licensnumber, dtfnumber, sex, trainingtype FROM Member WHERE name LIKE ? ORDER BY name"); st.setString(1,name); ResultSet rs - hvor name så skal indeholde teksten %Klaus% eller hvad der nu søges på ... d.v.s. det der skal søges på incl. % først og sidst.
2) Jeg ved godt at "standard" i Java er prepared statements p.g.a. performance, men hvis denne søgning ikke skal gentages x antal gange i sekundet/minuttet, så kan du lave et nyt SQL statement ved hver søgning, d.v.s. evt. undlade ? og st.setString(1,name); og i stedet skrive dit kriterie direkte i SQL-strengen.
Bare forslag som måske hjælper viddere ... næste trin er Java-manden.
Tag dit spørgsmål med over i java forumet så får du nok hurtigt svar
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.