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

 

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

Search database χρησιμοποιώντας parameters

Îåêßíçóå áðü ôï ìÝëïò gspiros. Τελευταία δημοσίευση από το μέλος Νατάσα Μανουσοπούλου στις 30-03-2007, 14:01. Υπάρχουν 1 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  30-03-2007, 13:57 27474

    Search database χρησιμοποιώντας parameters

    Λοιπόν, θέλω να φτιάξω μια σελίδα στην οποία σε ένα textbox θα γράφω ένα string και αυτό να αναζητάται σε βάση Sql Server 2005, αν υπάρχει.
    Έχω τον εξής κώδικα:
          
            // πρώτος τρόπος, χρήση παραμέτρων
            string sqlCommandText = "SELECT areaID, areaName FROM Areas WHERE areaName LIKE '%@areaname%'";
            SqlCommand myCommand = new SqlCommand(sqlCommandText, myConnection);
            myCommand.Parameters.Add("@areaname", SqlDbType.VarChar).Value = txtSearchArea.Text;
            //myCommand.Parameters.AddWithValue("@areaname", txtSearchArea.Text);         // ούτε αυτό δουλέυει....
           
            // δεύτερος τρόπος, χωρίς παραμέτρους
            /*
            string sqlCommandText = "SELECT areaID, areaName FROM Areas WHERE areaNAme LIKE '%";
            sqlCommandText += txtSearchArea.Text + "%' ORDER BY areaName";
            SqlCommand myCommand = new SqlCommand(sqlCommandText, myConnection);
             */
           
            SqlDataReader myReader;
            try
            {
                myConnection.Open();
                myReader = myCommand.ExecuteReader();

                if (!myReader.Read())
                {
                    lblSearch.Text = "There is not such area...";
                }
                else
                {
                    lblSearch.Text = "<b>Areas found:</b>";
                    lblSearch.Text += "<br>" + myReader["areaName"];
                }

                while (myReader.Read())
                {
                    lblSearch.Text += "<br>" + myReader["areaName"];
                }
            }
           ............ catch και τα λοιπά.........

    Όταν χρησιμοποιώ την πρώτη μέθοδο, το αποτέλεσμα είναι πάντα "There is not such area...", το οποίο σημαίνει ότι δεν βρήσκει τίποτα στην βάση.
    Γιατί?
    Μήπως δεν μπορώ να βάλω παραμέτρους μέσα σε μονό εισαγωγικό (') ???
    Αν όμως δεν χρησιμοποιήσω μονό εισαγωγικό, δεν μπορεί να δουλέψει η εντολή LIKE... Υπάρχει λύση?

    Με τον δεύτερο τρόπο, όλα δουλεύουν μια χαρά.
    Έχει κανείς καμιά ιδέα για το πως θα δουλέψει με χρήση παραμέτρων?
  •  30-03-2007, 14:01 27475 σε απάντηση της 27474

    Απ: Search database χρησιμοποιώντας parameters

    Το σωστό είναι:

    string sqlCommandText = "SELECT areaID, areaName FROM Areas WHERE areaName LIKE @areaname";
    myCommand.Parameters.Add("@areaname", SqlDbType.VarChar).Value = "%" + txtSearchArea.Text + "%";

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