2017-07-03 2 views
1

Ich habe eine Tabelle in der SQL Server-Datenbank und einige Spalten haben. Ich möchte es über ein Textfeld suchen und hier ist das Szenario: Zum Beispiel gibt es 3 Spalten mit dem Namen: "Name, Nummer, Code" Ich möchte Nummer 88 in das Textfeld eingeben und nach dem Klicken auf die Schaltfläche Suchen Jede Zeile mit einer Zelle, die 88 enthält, wird mir in der Gitteransicht angezeigt (und die 88 ist ein Teil dieser Zelle, zum Beispiel gibt es eine Zelle mit 2256887 darin, und ich möchte, dass diese Zelle angezeigt wird) Ich habe versucht zu lösen, aber es gibt zwei Probleme.Erstens ist: Ich kann nur eine Spalte auf einmal durchsuchen, und zweitens, wenn ich sogar 225688 eingeben, wird es mir nichts zeigen, bis ich die ganze 2256887 in das Textfeld eintippe.
Hier ist der Code in aspx Seite:Suche eine Tabelle in SQL-Server über einzelne Textfeld

<asp:Label ID="Label1" runat="server" Text="متن ورودی برای جستجو:"></asp:Label> 

<asp:TextBox ID="txtSearch" runat="server"></asp:TextBox> 

<asp:Button ID="btnSearch" runat="server" Text="search" OnClick="btnSearch_Click" /> 

<asp:GridView ID="searchresults" runat="server"></asp:GridView> 

und der Code in Seite cs:

using System.Data; 
using System.Data.SqlClient; 

protected void btnSearch_Click(object sender, EventArgs e) 
    { 
     String strConn = "Data Source=DESKTOP-MQ1PNVA\\SQLEXPRESS;Initial Catalog=linkfinderdb;Integrated Security=True"; 
     SqlConnection conn = new SqlConnection(strConn); 
     conn.Open(); 
     SqlCommand cmd = new SqlCommand("Select * FROM linktest WHERE [email protected]", conn); 

     try 
     { 

      SqlParameter search = new SqlParameter(); 
      search.ParameterName = "@txtSearch"; 
      search.Value = txtSearch.Text.Trim(); 

      cmd.Parameters.Add(search); 
      SqlDataReader dr = cmd.ExecuteReader(); 
      DataTable dt = new DataTable(); 
      dt.Load(dr); 

      searchresults.DataSource = dt; 
      searchresults.DataBind(); 
     } 
     catch (Exception ex) 
     { 
      Response.Write(ex.Message); 
     } 
     finally 
     { 
      conn.Close(); 
     } 
    } 


Telefon ist ein Spaltenname in der Tabelle.
Vielen Dank im Voraus.

+1

Du = in der SQL-Abfrage verwenden, möchten Sie LIKE verwenden. – Leonidas199x

Antwort

0

Verwenden Sie LIKE mit OR-Bedingung.

Beispiel: Wenn Ihre Spaltennamen Namen, Telefon und Code sind,

String strConn = "Data Source=DESKTOP-MQ1PNVA\\SQLEXPRESS;Initial Catalog=linkfinderdb;Integrated Security=True"; 
    SqlConnection conn = new SqlConnection(strConn); 
    conn.Open(); 

    string CommandText= "Select * FROM linktest WHERE phone LIKE @txtSearch OR name LIKE @txtSearch OR code LIKE @txtSearch"; 

    try 
    { 
     string searchTerm = string.Format("%{0}%", txtSearch.Text.Trim()); 
     Command = new SqlCommand(CommandText, conn); 
     Command.Parameters.Add(new SqlParameter("@txtSearch", searchTerm)); 
     SqlDataReader dr = Command.ExecuteReader(); 
     DataTable dt = new DataTable(); 
     dt.Load(dr); 

     searchresults.DataSource = dt; 
     searchresults.DataBind(); 
    } 
    catch (Exception ex) 
    { 
     Response.Write(ex.Message); 
    } 
    finally 
    { 
     conn.Close(); 
    } 
+0

Thank.But Ich habe einen Fehler erhalten: Falsche Syntax in der Nähe von '@txtSearch'. Ich habe gerade Ihre Codezeile durch meine ersetzt – Farzadj

+0

An welchem ​​Punkt erhalten Sie den Fehler? Ist es bei 'SqlDataReader dr = cmd.ExecuteReader();' –

+0

Versuchen Sie diese 'SqlCommand cmd = neue SqlCommand (" Wählen * FROM Linktest WHERE Telefon wie @txtSearch ODER Name wie @txtSearch OR-Code wie @ txtSearch ", conn);' –

Verwandte Themen