2011-04-02 89 views
0

我想選擇用戶名,名字,SecondName,PicturePath(看圖表),如名字(字符串搜索= textbox.text)幫助與SQL語法LIKE

OdbcCommand("SELECT UserID, FirstName, SecondName, p.PicturePath FROM User LEFT JOIN Pictures p ON p.UserID = u.UserID WHERE FirstName LIKE '%" + search + "%' ORDER BY UserID DESC", cn)) 

我的語法方式搞砸。

我的表結構:

enter image description here

回答

1

如果你打算在所有使用相關名稱,你通常應該在整個使用它們。它可以幫助程序員,即使數據庫不需要它。

SELECT u.UserID, u.FirstName, u.SecondName, p.PicturePath 
FROM User u 
LEFT JOIN Pictures p ON (p.UserID = u.UserID) 
WHERE u.FirstName LIKE '%" + search + "%' ORDER BY u.UserID DESC 

重新格式化一行,引用它並插入。它可能會克服語法問題。不知道它是否會給你你想要的結果。

如果您在使用此類工具時遇到問題,請從最簡單的開始,然後從中開始構建。我會按照這個順序去做,我自己。 (如果你把槍放在我的頭上讓我連接SQL。)

"SELECT u.UserID, u.FirstName, u.SecondName 
FROM User u;" 
-- 
"SELECT u.UserID, u.FirstName, u.SecondName 
FROM User u 
WHERE u.FirstName LIKE '%Cat%';" 
-- 
"SELECT u.UserID, u.FirstName, u.SecondName 
FROM User u 
WHERE u.FirstName LIKE " + "'%Cat%';" 
-- 
"SELECT u.UserID, u.FirstName, u.SecondName 
FROM User u 
WHERE u.FirstName LIKE '%" + "Cat" + "%';" 
-- 
SELECT u.UserID, u.FirstName, u.SecondName 
FROM User u 
WHERE u.FirstName LIKE '%" + search + "%';" 
-- 

等等。

0

使用%(如DOS *),或_(如DOS?)

快看,但你可能需要扭轉你的左連接。

//編輯: 和自然,你的搜索字符串需要加引號 //結束編輯

問候。 /噸

1
OdbcCommand("SELECT UserID, FirstName, SecondName, p.PicturePath FROM User LEFT JOIN Pictures p ON p.UserID = u.UserID WHERE FirstName LIKE '%" + search + "%' ORDER BY UserID DESC", cn)) 
0

首先你應該使用一個參數,所以你不需要擔心SQL注入。所以我會這樣做:

 using (System.Data.Odbc.OdbcConnection connect = new System.Data.Odbc.OdbcConnection("Connection String")) 
     { 
      using (System.Data.Odbc.OdbcCommand command = connect.CreateCommand()) 
      { 
       string sql = "SELECT u.UserID, u.FirstName, u.SecondName, p.PicturePath FROM User u " + 
        "LEFT JOIN Pictures p ON p.UserID = u.UserID WHERE u.FirstName LIKE '%' + @search + '%' " + 
        "ORDER BY u.UserID DESC"; 
       command.CommandText = sql; 
       command.CommandType = System.Data.CommandType.Text; 
       command.Parameters.AddWithValue("@search", searchValue); 

       using (System.Data.Odbc.OdbcDataReader dr = command.ExecuteReader()) 
       { 
        //Do what you need here 
       } 
      } 
     } 

希望這有助於!