Λοιπόν, θέλω να φτιάξω μια σελίδα στην οποία σε ένα 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... Υπάρχει λύση?
Με τον δεύτερο τρόπο, όλα δουλεύουν μια χαρά.
Έχει κανείς καμιά ιδέα για το πως θα δουλέψει με χρήση παραμέτρων?