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

 

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

sql queries: Delete and truncate table

Îåêßíçóå áðü ôï ìÝëïò labroutsaki. Τελευταία δημοσίευση από το μέλος Panagiotis Kefalidis στις 12-11-2008, 12:23. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  11-11-2008, 15:57 46149

    sql queries: Delete and truncate table

    Καλησπέρα,

    έχω δημιουργήσει έναν πίνακα "Logariasmoi" στη βάση δεδομένων μου και έχω δημιουργήσει ένα aspx στο οποίο έχω φιάξει fields με επιλογές για add κάποιον νέο , remove κάποιον ,και delete όλους τους λογαριασμούς. Γράφω  σε c# και η προσθήκη κάποιου λογαριασμού εκτελείται κανονικά (την ελέγχω και έχει περαστεί και στη βάση μου), έχω πρόβλημα όμως με το remove και το delete όποιος μπορεί να μου εξηγήσει που έχω λάθος γτ έχω κολλήσει..

    Ευχαριστώ

     Το table στο aspx το έχω δηλώσει να περνείεται σε listbox έτσι:

    <asp:ListBox ID="Logariasmoi1" runat="server" Height="141px" Width="188px" AutoPostBack="True"

    DataSourceID="SqlDataSource1" DataTextField="Account_Number"

    DataValueField="Account_Number"

    OnSelectedIndexChanged="Logariasmoi_SelectedIndexChanged">

    </asp:ListBox>

     

    και προσπαθώ να δηλώσω στο cs να κάνει remove έναν επιλεγμένο account_number ΄κάπως έτσι:

    SqlCommand cmd1= new SqlCommand(

    "Delete (Account_Number) from Logariasmoi " +

    "Values ('" + SelectedIndex.List + "')",

    con);

    try

    {

    cmd1.ExecuteNonQuery();

    Logariasmoi1.Items.Remove(Logariasmoi1.SelectedIndex);

    }

     

     

  •  11-11-2008, 17:21 46153 σε απάντηση της 46149

    Απ: sql queries: Delete and truncate table

    Καταρχήν κάνεις κάτι πάρα πάρα πολύ κακό, το οποίο μπορεί να επιτρέψει SQL Injections κι αυτό είναι οτι περνάς την τιμή του SelectedIndex με string concatenation, κάνεις δηλαδή αυτό το "kati" + ayto + "kati allo". Ο καλύτερος τρόπος είναι να χρησιμοποιήσεις parameters που είναι πολύ εύκολο να το κάνεις (παράδειγμα παρακάτω). Δεν ξέρω τι βάση έχεις (υποθέτω SQL Server), αλλά το sql query μου φαίνεται λάθος. Το σωστό syntax είναι:

    DELETE FROM logariasmoi WHERE account_number = 1

    Τώρα, το παράδειγμα:

    try {
    SqlCommand cmd1 = new SqlCommand();
    cmd1.CommandText = "DELETE FROM logariasmoi WHERE account_number=@acct";
    cmd1.Parameters.AddWithValue("@acct",Logariasmoi1.SelectedIndex);
    cmd1.Connection = con;

    cmd1.ExecuteNonQuery();
    }
    catch (Exception ex){
    Debug.WriteLine(ex.Message);
    }

    H αλήθεια είναι οτι δεν το δοκίμασα το παραπάνω (σαν syntax), αλλα λογικά είναι ok.


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  12-11-2008, 10:33 46163 σε απάντηση της 46153

    Απ: sql queries: Delete and truncate table

    Σ'ευχαριστώ πολύ αλλά μου βγάζει λάθος και πάλι.. Τον sql Server 2005 χρησιμοποιώ αλλά  τώρα μαθαίνω.. Αυτό το "@acct" παίρνει τον Αριθμό Λογαριασμού που επιλέγεται από τη λίστα από τον χρήστη, για να γίνει remove? Επίσης,   την παρακάτω γραμμη: cmd1.Parameters.AddWithValue("@acct",Logariasmoi1.SelectedIndex);

    την άλλαξα σε:

    cmd1.Parameters.Remove("@acct",Logariasmoi1.SelectedIndex); γιατί θέλω το remove και όχι το add και βγάζει το error:

    Error:No overload for method 'Remove' takes '2'

    Ευχαριστώ και πάλι!!


     

  •  12-11-2008, 11:04 46164 σε απάντηση της 46163

    Απ: sql queries: Delete and truncate table

    Εντάξει λύθηκε το πρόβλημα.. μη διαβάσετε καν το προηγούμενο post..

    Thanks!!!

  •  12-11-2008, 12:23 46166 σε απάντηση της 46164

    Απ: sql queries: Delete and truncate table

    labroutsaki:

    Εντάξει λύθηκε το πρόβλημα.. μη διαβάσετε καν το προηγούμενο post..

    Thanks!!!

    Ahahaha, κάνω λοιπόν ότι δεν το διάβασα.. εάν θες επισήμανε την ερώτηση ως απαντημένη ώστε στο μέλλον εάν κάποιος ψάξει κάτι παρόμοιο να μπορεί εύκολα να βρει απαντήσεις.


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems