2017-07-03 56 views
1

我在sql server數據庫中有一個表,並有一些列。 我想通過一個文本框搜索它,這裏是場景: 例如,有3列命名爲:「名稱,編號,代碼」 我想在文本框中輸入數字88,並在點擊搜索按鈕後,每行有一個包含88的單元格將在網格視圖中顯示給我(並且88是該單元格的一部分,例如,其中包含2256887的單元格,並且我希望顯示該單元格) 我試圖解決,但有兩個問題。首先是:我一次只能搜索一列,其次,如果我輸入了225688,它將不會顯示任何內容,直到我在文本框中鍵入整個2256887。
這裏是aspx頁面代碼:通過單個文本框在sql server中搜索表

<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> 

和頁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(); 
     } 
    } 


手機在表中的列名。
在此先感謝。

+1

您使用=在您的SQL查詢,您要使用等。 – Leonidas199x

回答

0

嘗試使用LI或OR條件。

例如:如果你的列名的姓名,電話和代碼,

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

Thanks.But我收到錯誤:'@txtSearch'附近的語法不正確。 我剛剛用您的代碼行替換了我的 – Farzadj

+0

您在哪一點得到錯誤?它是在'SqlDataReader dr = cmd.ExecuteReader();' –

+0

試試這個'SqlCommand cmd = new SqlCommand(「Select * FROM linktest WHERE phone phone LIKE @txtSearch or name LIKE @txtSearch or code LIKE @txtSearch」,conn);' –