Εμφάνιση 1-3 από 3
  1. #1
    Εγγραφή
    14-11-2005
    Περιοχή
    Βέροια
    Ηλικία
    39
    Μηνύματα
    201
    Downloads
    10
    Uploads
    0
    Ταχύτητα
    24576/1024
    ISP
    ΟΤΕ Conn-x
    DSLAM
    ΟΤΕ - ΑΓ. ΓΕΩΡΓΙΟΣ
    Router
    Zhone
    SNR / Attn
    6(dB) / 10(dB)
    Path Level
    Fastpath
    Ρε παιδιά help me δεν βγάζω άκρη...έχω ένα πίνακα με 2 στήλες ID και names
    θέλω επιλέγοντας το ID μου εμφανίζει το όνομα που πρέπει
    Δείτε τι έχω κάνει ...μη με κράξετε αρχάριος.
    Κώδικας:
    package Mypack;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.Statement;
    import javax.annotation.Resource;
    import javax.jws.WebMethod;
    import javax.jws.WebParam;
    import javax.jws.WebService;
    import javax.sql.DataSource;
    import java.sql.ResultSet;
    
    
    @WebService(serviceName = "MTEL")
    public class MTEL {
    
    
        @Resource(name = "data1")
        private DataSource data1;
    
    
        @WebMethod(operationName = "Search")
        public String Search(@WebParam(name = "numb") String numb) {
            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection con = DriverManager.getConnection("jdbc:mysql://192.168.1.3:3306/mydata", "root", "");
                Statement stmt = con.createStatement();
                
    String sql = "SELECT name FROM people WHERE ID='" + numb + "";          
                ResultSet rs = stmt.executeQuery(sql);
                while (rs.next()) {
                    uname = rs.getString("name");
                    int id = rs.getInt("ID");
                    System.out.println(uname);
    
    
                }
    
    
    
    
    
    
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
            return uname;
        }
    }
    Ότι και αν έχω δοκιμάσει παίρνω πάντα null σαν αποτέλεσμα στο http://localhost:.............
    Τελευταία επεξεργασία από το μέλος guybrush07 : 16-07-12 στις 16:12.

  2. #2
    Εγγραφή
    03-12-2005
    Περιοχή
    Ηράκλειο
    Ηλικία
    33
    Μηνύματα
    8.296
    Downloads
    7
    Uploads
    0
    Τύπος
    VDSL2
    Ταχύτητα
    110000/10999
    ISP
    Wind
    Router
    Zyxel VMG8623-T50B
    SNR / Attn
    23(dB) / 3.8(dB)
    Path Level
    Interleaved
    Είναι σωστή η IP που δίνεις στο connection string;
    Αν ο SQL server τρέχει στο ίδιο PC που τρέχει η εφαρμογή τότε θα πρέπει να βάλεις 127.0.0.1 ή localhost.

    Και 2 σημεία που είδα στα γρήγορα:
    Κώδικας:
    String sql = "SELECT name FROM people WHERE ID='" + numb + "";      
    Δεν θα 'πρεπε να 'ναι ως εξής..;
    String sql = "SELECT name FROM people WHERE ID='" + numb + "'";
    ..και..

    Κώδικας:
    while (rs.next()) {
                    uname = rs.getString("name");
                    int id = rs.getInt("ID");    // είναι σωστό αυτό; αφου νομίζω το resultset περιέχει μόνο τα names! (select name ..)
                    System.out.println(uname);
    
    
                }

  3. #3
    Εγγραφή
    17-09-2007
    Ηλικία
    47
    Μηνύματα
    865
    Downloads
    1
    Uploads
    0
    Καλησπέρα,

    Επιπλέον των παραπάνω, μήν κάνεις ΠΟΤΕ string concatenation δεδομένων που δίνει ο χρήστης για δημιουργία SQL queries. Διάβασε για SQL injection.

    Πιο σωστός τρόπος εν προκειμένω είναι:

    Κώδικας:
    import java.sql.PreparedStatement;
    ...
    PreparedStatement stmt = con.prepareStatement("SELECT id, name FROM people WHERE id=?"); // προσέθεσα το id στο SELECT
    int id = Integer.parseInt(numb);
    stmt.setInt(1, id);
    ResultSet rs = stmt.executeQuery();
    ...
    Εξίσου σημαντικό είναι να διασφαλισεις ότι θα κλείνεις πάντα το Connection, ως εξής:

    Κώδικας:
    Connection conn = null;
    try {
        ...
    }
    catch(...) {
        ...
    }
    finally {
        if( conn != null ) {
            try{ conn.close(); }
            catch(Exception ignore) {}
        }
    }
    (Αν θές να είσαι πιο εντάξει πρέπει να κάνεις το ίδιο και για τα PreparedStatement, ResultSet, δηλαδή να τα κλείνεις το finally.)

    Όταν είσαι εντάξει με αυτά, δές και για connection pooling/datasources αντί να φτιάχνεις το java.sql.Connection εξαρχής (και να έχεις κωδικούς πρόσβασης hardcoded).

    Καλή επιτυχία

Παρόμοια Θέματα

  1. Μηνύματα: 6
    Τελευταίο Μήνυμα: 12-05-12, 02:14
  2. hash table απο συνδεδεμενη λιστα στη C
    Από ambageo στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμού
    Μηνύματα: 2
    Τελευταίο Μήνυμα: 29-12-10, 01:25
  3. URL από String μέσω SH Scripting στο Linux
    Από PiXel στο φόρουμ Unix - Linux
    Μηνύματα: 2
    Τελευταίο Μήνυμα: 14-12-10, 14:22
  4. Access πρόβλημα επιλογή table από combo box
    Από tpelek στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμού
    Μηνύματα: 9
    Τελευταίο Μήνυμα: 13-12-07, 16:21
  5. Java:Υπάρχει τρόπος να ανιχνέυω το τελευταίο γράμμα απο ένα string??
    Από sadako στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμού
    Μηνύματα: 2
    Τελευταίο Μήνυμα: 24-11-06, 14:52

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας