Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Τιμή ενός πεδίου πίνακα

Îåêßíçóå áðü ôï ìÝëïò thoidis. Τελευταία δημοσίευση από το μέλος thoidis στις 16-01-2006, 13:25. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  16-01-2006, 12:47 8717

    Super Angry [8o|] Τιμή ενός πεδίου πίνακα

    Έχω τον εξής κώδικα για να ζητήσω δεδομένα από τον πίνακα χρηστών όταν πατηθεί το πλήκτρο ΟΚ...

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)

    ' Retrieve the connection string stored in the Web.config file.

    Dim connectionString As String = ConfigurationManager.ConnectionStrings("MegaConnectionString").ConnectionString

    Dim ds As New DataSet()

    Dim queryString As String = "Select * From [Users] Where userId='" & xrhsths.Text & "'"

    Try

    ' Connect to the database and run the query.

    Dim connection As New SqlConnection(connectionString)

    Dim adapter As New SqlDataAdapter(queryString, connection)

    ' Fill the DataSet.

    adapter.Fill(ds)

    Catch ex As Exception

    ' The connection failed. Display an error message.

    Message.Text = "Unable to connect to the database."

    End Try

    .....

    Μπορεί κάποιος να μου πει πώς θα αναφερθώ στο πεδίο userId των δεδομένων που ήρθαν με την SQL που εκτελέσθηκε ώστε να το συγκρίνω με κάποια τιμή...

     


    Περικλής Θωίδης
    ____________________________________
    Η μεγάλη ανανέωση του κόσμου δεν θα έρθει τη στιγμή που οι φτωχοί θα συμβιβαστούν με τη μοίρα τους,
    αλλά τη στιγμή που οι πλούσιοι θ' αρχίσουν να έχουν ηθικούς δισταγμούς για τη δική τους μοίρα!
  •  16-01-2006, 13:10 8719 σε απάντηση της 8717

    Απ: Τιμή ενός πεδίου πίνακα

    Παίρνεις την τιμή ενός πεδίου με:



    ds.Tables[0].Rows[0]["userId"]

    Μερικά σχόλια στον κώδικά σου, ιδιαίτερα επειδή κάνει user authentication:

    Αποτελεί μεγάλο security hole να εισάγεις απευθείας το user id που έχει εισάγει ο χρήστης μέσα στην sql. Αν π.χ. ο χρήστης εισάγει για user id το

    '; TRUNCATE TABLE Users; select '

    Τότε τελικό query θα είναι

    Select * From [Users] Where userId=''; TRUNCATE TABLE Users; select ''

    το οποίο θα κάνει κάτι πολύ κακό :-)

    Είναι προτιμότερο να βάλεις το user id σαν named parameter ως εξής:



    string strSQL = "SELECT @ FROM Users WHERE UserID=@UserID";

    System.Data.SqlClient.SqlDataAdapter da = new System.Data.SqlClient.SqlDataAdapter(strSQL, connection);

    da.SelectCommand.Parameters.Add("@UserID", strUserID);

    Επίσης, είναι προτιμότερο να στέλνεις το password στη βάση σαν παράμετρο με ένα statement του τύπου:

    SELECT @ FROM Users WHERE UserID=@UserID AND Password=@Password

    Γιατί αλλιώς ένας "πονηρός" χρήστης με τη βοήθεια του debugger μπορεί να υποκλέψει passwords (αν τα αποθηκεύεις σε plain text, κάτι που επίσης είναι κακό).

     


    Νατάσα Μανουσοπούλου
  •  16-01-2006, 13:25 8720 σε απάντηση της 8717

    Απ: Τιμή ενός πεδίου πίνακα

    Ευχαριστώ πολύ για τη βοήθεια.
    Έχεις απόλυτα δίκαιο και θα χρησιμοποιήσω παραμέτρους... απλά ο κώδικας που έστειλα ήταν αντιγραφή-επικόλληση από το msn tutorial και είχα κολλήσει στην τιμή του πεδίου που δεν μπορούσα να βρω εντολή για να την προσπελάσω.

    Καμία πρόταση για βιβλίο (έχω παραγγείλει το "Beginning ASP.NET 2.0 Databases Beta Preview") ?
    Περικλής Θωίδης
    ____________________________________
    Η μεγάλη ανανέωση του κόσμου δεν θα έρθει τη στιγμή που οι φτωχοί θα συμβιβαστούν με τη μοίρα τους,
    αλλά τη στιγμή που οι πλούσιοι θ' αρχίσουν να έχουν ηθικούς δισταγμούς για τη δική τους μοίρα!
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems