2013-08-20 41 views
0

我想在我的asp.net/vb.net網站中使用數據集適配器。但我需要使用多個值進行搜索,理想情況下,我只想將一個聲明傳遞給我的數據集適配器。這是可能的,因爲它是如何,它似乎並沒有帶回任何東西:在vb.net數據集適配器中使用SQL IN

我的繼承人數據適配器:

enter image description here

查詢是:

select * from joblist where username in (@username) 

我m試圖打電話給:

Private dtJobs As Barry.joblistDataTable 
Private taJobs As New BarryTableAdapters.joblistTableAdapter 

    dtJobs = New Barry.joblistDataTable 
    dtJobs = taJobs.FilterSearch("'tomb','martinm','chrise'") 

rptJobList.DataSource = dtJobs 
rptJobList.DataBind() 

我在做什麼錯?

回答

1

傳入一個逗號分隔的字符串,一個參數。您不能像在IN聲明中那樣使用它。

您必須將其拆分爲表格,例如使用this solution。使用此功能(我假設你使用SQL Server作爲您的數據庫),你可以重寫查詢爲:

select joblist.* from joblist 
inner join dbo.Split(',', @username) t 
on joblist.username = t.s 

這種方式將您的多值參數爲表,並加入到原始表

+0

DBO .Split()是舊的解決方案。如果技術堆棧支持該新解決方案,則使用表值參數。 –

+0

@JoelCoehoorn是的,這取決於SQL Server的版本。另外對於TVP,您無法傳遞字符串,這是OP似乎需要的字符串 –

+0

無效的對象名稱'dbo.Split'。 - 那裏有什麼不對嗎? – TMB87

相關問題