【问题标题】:Use SQL IN inside vb.net dataset adaptor在 vb.net 数据集适配器中使用 SQL IN
【发布时间】:2013-08-20 23:53:33
【问题描述】:

我正在尝试在我的 asp.net/vb.net 网站中使用数据集适配器。但我需要使用多个值进行搜索,理想情况下,我只想将 in 语句传递给我的数据集适配器。这可能吗,就这样,它似乎没有带回任何东西:

这是我的数据适配器:

查询是:

select * from joblist where username in (@username)

我正在尝试调用它:

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()

我做错了什么?

【问题讨论】:

    标签: asp.net vb.net dataset


    【解决方案1】:

    你传入的是一个逗号分隔的字符串,一个参数。您不能在 IN 语句中按原样使用它。

    您必须将其拆分为表格,例如使用this solution。使用此函数(我假设您使用 SQL Server 作为数据库),您可以将查询重写为:

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

    这种方法将您的多值参数拆分为表格并连接到原始表格

    【讨论】:

    • dbo.Split() 是旧的解决方案。如果技术栈支持,新的解决方案是使用表值参数。
    • @JoelCoehoorn 是的,具体取决于 SQL Server 的版本。同样对于 TVP,您不能传递字符串,这正是 OP 似乎想要的
    • 无效的对象名称“dbo.Split”。 - 有什么问题吗?
    • @TomBeech 您是否根据链接中显示的解决方案创建了函数?
    猜你喜欢
    • 2011-09-26
    • 2011-10-22
    • 2021-06-28
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    • 2011-02-11
    相关资源
    最近更新 更多