Text aus Textfield einem TableAdapter als Parameter übergeben
-
Ich möchte gerne aus einem Textfeld meiner Webseite (ASP.Net2.0, C#), das als Suchwort für eine Datenbank (SQL 2005) herhalten soll, den Text auslesen und diesen Text als Parameter für meine SELECT Anweisung nutzen. Dazu muss ich aber den Text meines Textfeldes als Parameter meinem Query hinzufügen. Meine Frage ist nun, wie kann ich das machen? Den Parameter definiere ich so:
SqlParameter param = new SqlParameter("@SearchString", txtMeanViewSearchField.Text);
Normalerweise füge ich den Parameter dann einem SqlCommand-Objekt hinzu:
SqlCommand GetDataBySearchFilter = new SqlCommand("SELECT blablabla", connection); GetDataBySearchFilter.Parameters.Add(param);
Bis hierhin klappt das ja auch alles. Auch wenn ich diese Abfrage dem TableAdapter hinzufüge mit
meanAdapter.Adapter.SelectCommand = GetDataBySearchFilter;
ist noch alles in bester Ordnung. Wenn ich jetzt aber in einer anderen Methode diesen Command ausführen will mit
meanTable = meanAdapter.GetDataBySearchFilter(txtMeanViewSearchField.Text);
kennt er die Methode nicht. Ist ja auch klar, da ich sie erst zur Laufzeit meinem TableAdapter hinzufüge. Meine Frage ist jetzt, wie mache ich das dass ich den benutzerdefinierten Text als Parameter an einen Query übergebe, diesen ausführe und als Antwort eine Tabelle mit den Werten zurückbekomme? Kann mir da jemand weiterhelfen?
-
mach das mal so
sqlCommand.Parameters.Add(param)
m_dataAdapter = New SqlDataAdapter(sqlCommand);
m_dataAdapter.Fill(m_dataTable)
-
Danke, das habe ich gerade mal versucht. Ich bekomme leider keine Suchergebnisse zurück, die Abfrage liefert aber keinen Fehler. So sieht es jetzt aus:
SqlCommand GetDataBySearchFilter = new SqlCommand("SELECT blalbla WHERE ImportantMeansList.MeanName LIKE '%@SearchString%'", conn); SqlParameter param = new SqlParameter("@SearchString", txtMeanViewSearchField.Text); GetDataBySearchFilter.Parameters.Add(param); SqlDataAdapter adapter = new SqlDataAdapter(GetDataBySearchFilter); conn.Open(); DataTable table = new DataTable(); try { adapter.Fill(table); } catch (Exception ex){ Console.WriteLine(ex); } GridViewMeans.DataSource = table; GridViewMeans.DataBind();
Leider ist mein Ergebnis leer, obwohl ich gezielt einen Namen eingeben habe, der in der Spalte MeanName auch vorhanden ist (bzw. einen Teil des Namens). Stimmt denn meine Abfrage mit dem LIKE so? Ich habe es auch schon ohne das @ versucht, also nur mit LIKE '%SearchString%' und habe auch kein Ergebnis bekommen.
-
Ich habe etwas im Netz gefunden das tatsächlich funktioniert. Es lag an meinem LIKE clause. Der muss so heißen:
"SELECT blabla FROM blavla WHERE Tabelle1.Spalte1 LIKE '%'+@SearchString+'%'"