2015-05-10 84 views
0

我需要選擇包含來自多個列的關鍵字行從多個列中獲取數據,而不是一列如:SQL:用在哪裏,或者

"SELECT * From UserTable WHERE Name='" + name + "'" + " OR FullName='" + name + "'"" 

我要選擇多列爲準一行包含變量'name'。但上述查詢不起作用。應該做些什麼改變?

如果名稱中包含的值,或者如果全名中包含的值或者即使兩者包含的價值,我會liek讓那些行:)當前查詢給了我一個例外:

Incorrect syntax near the keyword 'FullName'. 

我試着這也爲另外一個例子:

  SqlConnection cnn = new SqlConnection(conString); 

      SqlCommand cmd = new SqlCommand("Select * from TheHive WHERE [email protected] or Group like @group", cnn); 
      cmd.Parameters.Add("@Variable", SqlDbType.VarChar).Value = "wef"; 
      cmd.Parameters.Add("@Group", SqlDbType.VarChar).Value = "wef" + "%"; 

      cnn.Open(); 
      SqlDataReader rdr = cmd.ExecuteReader(); 
      while (rdr.Read()) 
      { 
       OpalData data = new OpalData(); 
       data.ID = Convert.ToInt32(rdr["id"]); 
       data.CodeLine = rdr["CodeLine"].ToString(); 
       data.Variable = rdr["Variable"].ToString(); 
       data.Group = rdr["Group"].ToString(); 
       data.Action = rdr["Action"].ToString(); 
       data.Number = rdr["Number"].ToString(); 

       knowledge.Add(data); 
      } 

而且它的微軟Azure表之中:

enter image description here

我仍然得到相同的錯誤。

我只是想找到所有具有字符串'wef'的行,並期望輸出爲所有行,因爲所有行至少在其一列中包含'wef'。

+2

你是什麼意思由_doesn't WORK_做?例如,您可以加入您的表格。 –

+0

@SonerGönül非常抱歉,我的意思是同一張表的多列COLORNS – Dinuka

+5

要修復的第一件事:停止構建你的SQL。使用參數化的SQL。您當前的代碼不適用於包含撇號的名稱,並且容易受到SQL注入攻擊。 –

回答

0

我打算假設您有一種情況,名稱是像Joe這樣的名字,FullName就像是Joe Smith,並且您想要查找Joe的第一個名稱或包含Joe的FullName。因此,它應該是:

"SELECT * From UsersTable WHERE Name='" + name + "' OR FullName like '" + name + "%'"; 

好的。這是爲我工作:

SqlCommand cmd; 
    SqlDataReader dr; 
    string ConnectionString = ConfigurationManager.AppSettings["ConnectionString"]; 
    string name = "Joe"; 

    SqlConnection cnn = new SqlConnection(ConnectionString); 

    cmd = new SqlCommand("Select * from t_Users WHERE [email protected] or FullName like @fullname", cnn); 
    cmd.Parameters.Add("@name", SqlDbType.VarChar).Value = name; 
    cmd.Parameters.Add("@fullname", SqlDbType.VarChar).Value = name + "%"; 

    cnn.Open(); 
    dr = cmd.ExecuteReader(); 
    while (dr.Read()) 
    { 
    } 
+0

這仍然給我相同的異常隊友:( – Dinuka