2012-10-24 88 views
1

我已經創建了一個數據庫並在gridview中顯示數據。我試圖啓用搜索員工姓名並返回結果的方法。SQL查詢拋出錯誤C#

下面的SQL在輸入正確名稱時顯示正確的行。 -

SELECT personID, name, address, phoneNumber, age FROM dbo.person WHERE name Like @name 

我希望能夠顯示名稱正確且部分正確的行。

我曾嘗試以下SQL -

SELECT personID, name, address, phoneNumber, age FROM dbo.person WHERE name Like @name% 

但它引發錯誤「沒有重載方法‘searchName’需要兩個參數」。

當點擊「搜索」按鈕,下面的代碼被執行:

 this.personTableAdapter.searchName(this.personDataSet.person, 
     searchTextBox.Text); 
+0

是否從存儲過程派生searchName?這是你添加到你的表適配器的東西嗎?它顯然不需要2個參數。你可能不需要第一個。 – awright18

+0

searchName是我使用SQL創建的方法的名稱 「SELECT personID,name,address,phoneNumber,age FROM dbo.person WHERE name Like @ name%」 –

+0

它已被添加到表格適配器中。 –

回答

6

修改LIKE到關鍵字的串聯和%

SELECT... 
FROM... 
WHERE name LIKE @name + '%' 
+0

對於「部分正確」,你可能想要去'LIKE'%'+ LTRIM(RTRIM(@name))+'%''。如果空間不重要,請刪除修剪功能。 – Heki

1

可以嘗試做LIKE像這樣的查詢

SqlCommand cmd = new SqlCommand("SELECT personID, name, address, phoneNumber, age FROM dbo.person WHERE name Like @name"); 
    cmd.Parameters.AddWithValue("@name", name + "%"); 
+1

該op正在使用表格適配器 –

+0

啊,我明白了。我的壞,一大早。 :-) – scheien

0

我想你將使用文本框或類似的東西來獲取用戶正在搜索的名稱。 當你讀它,你可以使用類似的東西:

string _Name = "%" + searchTextBox.Text + "%"; 

那麼字符串變量傳遞給您的腳本。

SELECT personID, name, address, phoneNumber, age FROM dbo.person WHERE name Like @name 

希望這可以幫助,它適用於我。