2012-06-04 136 views
-1

這裏我試圖從db中選擇一個數據,使用like語句,但是它已經用我的數據的第一位進行搜索。但我需要編寫代碼,比如搜索,而不是我的數據的前三位。誰能幫我。SQL like語句

public void CC() 
     { 
      CCddl.Items.Clear(); 
      ListItem l = new ListItem(); 
      l.Text = "-Select-"; 
      CCddl.Items.Add(l); 
      CCddl.SelectedIndex = 0; 
      con.Open(); 
      SqlCommand cmd = new SqlCommand("select Componetcode from dbo.tbl_component where Sitecode like '%" + TextBox1.Text + "%'", con); 
      SqlDataReader dr1; 
      dr1 = cmd.ExecuteReader(); 
      while (dr1.Read()) 
      { 
       ListItem n = new ListItem(); 
       n.Text = dr1["Componetcode"].ToString().Trim(); 
       CCddl.Items.Add(n); 
      } 
      dr1.Close(); 
      con.Close(); 
     } 
+7

我看到看到一個SQL注入。 – CodesInChaos

+0

@ CodeInChaos:can not get u –

+0

可能是相關的:[漏洞利用](http://xkcd.com/327/)。 – Groo

回答

1

無法操作等上的數字,你需要轉換數通過鑄造或轉換爲stirng ...

編輯

,你還可以使用子功能跳過第三個字符或列中的數據

select * from (
    select column1,cast(column2 as varchar(30)) as column2 from tablename 
) d where 
    substring(column2,4, LEN(column2) - 3) like '%textosearch%' 

你需要寫下來

select * from tablename where column like '___textosearch%' 

所以你的代碼會

SqlCommand cmd = new SqlCommand("select Componetcode from dbo.tbl_component 
     where Sitecode like '___" + TextBox1.Text + "%'", con); 

_允許您匹配在SQL中的單個字符,所以你需要寫三「_」我在我的代碼做

還可以修改你的SQL參數代碼,以便taht它避免SQL注入攻擊

+0

朋友,實際上現在它已經加載了db的所有數據 –

+0

@AravindSai - 剛剛刪除fir%符號並嘗試更新我的代碼可能適合您。 .. –

+0

沒有得到任何改變的朋友 –