2017-04-14 2 views
1

ich java bin neu, und ich habe das Problem, wenn ich versuche, Daten aus SQL-DB zu holen und es zeigen, wenn er sich anmeldet.Java + SQL executeQuery und Wiedereinarbeitungs

sql = "select nom from adherent where id_adherent=3"; 
try { 
    pst = con.prepareStatement(sql); 
    ResultSet rs = pst.executeQuery(); 
} catch (SQLException e) { 
    JOptionPane.showMessageDialog(null, "here 1"); 
} 

try { 
    if (rs.next()) { 
     String sum = rs.getString("select *"); 
     nom.setText(" " + sum); 
    } 
} catch (SQLException e) { 
    JOptionPane.showMessageDialog(null, "here 2"); 
} 

danken Ihnen.

+1

Ich bezweifle, dass 'rs.getString (" select * ")' wird keinen Erfolg haben. – Berger

+0

Sie brauchen nicht zwei separate Try-Catch-Block, aber was ist Ihr tatsächliches Problem? –

+0

Daten einfach nach Spaltennamen (oder Index) wie rs.getString ("nom") oder rs.getString (1) abrufen. Außerdem empfiehlt es sich, das ResultSet im selben try-Block zu verwenden, in dem Sie die Daten erstellt haben. –

Antwort

0

denke ich, dieser Wille help you:

sql = "select nom from adherent where id_adherent=3"; 

try { 
    pst = con.prepareStatement(sql); 
    ResultSet rs = pst.executeQuery(); 

    if (rs.next()) { 
     String sum = rs.getString("nom"); 
     nom.setText(" " + sum); 
    } 
} 
catch (SQLException e) { 
    JOptionPane.showMessageDialog(null, "here 1"); 
} 
+0

ja iv'e getan genau so danke @everyone <3 –

1

Sie nicht brauchen zwei versuchen und zu fangen, weil Sie Ihre ResultSet im ersten try-Block definieren, so dass Sie diese nicht verwenden können, in einer anderen versuchen, so dass dies stattdessen machen:

sql = "select nom from adherent where id_adherent=3"; 
try { 
    pst = con.prepareStatement(sql); 
    ResultSet rs = pst.executeQuery(); 
    if (rs.next()) { 
     String sum = rs.getString("nom"); 
     nom.setText(" " + sum); 
    } 
} catch (SQLException e) { 
    JOptionPane.showMessageDialog(null, "here 1"); 
} 

Wenn Sie etwas perfekt und weit von jedem Syntaxfehler werden sollen, oder SQL-Injection, müssen Sie den Bediener zum Beispiel ? von PreparedStatement verwenden:

sql = "select nom from adherent where id_adherent = ?"; 
//--------------------------------------------------^ 
try { 
    pst = con.prepareStatement(sql); 
    pst.setInt(1, id_adherent);//you can set any number in id_adherent in your case 3 
    .... 
+0

Wenn Sie ein PreparedStatement verwenden, wäre es viel sinnvoller (und sicherer), das SQL als "select nom from adherent where id_adherent =?" und dann setze den Parameter mit pst.setInt (1, 3); –

+0

Ich schreibe schon etwas in diesem Zusammenhang @dsp_user nur einen Moment –

+0

@dsp_user ist das, was du meinst, überprüfe meine Bearbeitung;) –

Verwandte Themen