如何在SQL Server表适配器查询中指定通配符

时间:2015-01-05 17:20:48

标签: c# sql sql-server wildcard tableadapter

我试图弄清楚如何在SQL Server表适配器查询中指定通配符。我已经herehere,并在Microsoft技术网站上的其他地方搜索过,找不到合适的示例。

我有一个表适配器查询,它应该根据带有两个参数的WHERE子句返回单个值(表适配器查询向导中的特定查询选项)。以下是表适配器的查询,它可以很好地测试Query Builder中的查询并使用SQL Management Studio为特定数据库表编写查询。

SELECT     owner_name_1
FROM         BuildingPermit.dbo.real_estate
WHERE     (prop_addr_no like ?) AND (prop_addr_str = ?)

为了说明问题,上面的查询是在适配器中。在我的例子中,11%和ACADEMY ST作为参数传递给查询。

基本上,如果WHERE参数是 11-11A ACADEMY ST ,我会在测试时返回非空值,但不会在我的C#程序。

这是一个C#处理程序,它不起作用。

private void owner_cb_DropDown(object sender, EventArgs e)
{
  string str_no = street_number_cb.Text.Trim().ToUpper() + "%"; 
  string str_name = street_name_cb.Text.Trim().ToUpper();

  string owner_name_1 = (string )real_estateTableAdapter1.owner_name_1_q(str_no,            str_name));
  owner_cb.Text = owner_name_1;
}

更新

我尝试过使用相同结果的完整行查询。

DataTable re_tbl = real_estateTableAdapter1.get_re_rec_by_str_num_name_q(search_street_number, street_name_cb.Text.ToString().ToUpper());

// Break after one loop. Only one answer expected.                
foreach (DataRow dr in re_tbl.Rows)
{
    string temp_val = (string)dr["owner_name_1"];
    owner_cb.Text = temp_val;
    break;

}

我找回了null。

我还试过用sinqle引号括起包含11%(来自我的例子)的参数,这也不起作用。

我已经尝试过了,但QueryBuilder不会解析它。

SELECT     owner_name_1
FROM         BuildingPermit.dbo.real_estate
WHERE     (prop_addr_no LIKE @p1) AND (prop_addr_str = @p2)

1 个答案:

答案 0 :(得分:2)

这就是我所做的,而且它有效,我希望它对你有用。

1.-在数据集设计器中右键单击表适配器,添加查询

enter image description here

2.-使用SQL Satatements

3.-选择哪个返回单个值

4.-打开查询构建器,它看起来像这样:

enter image description here

5.-在我的测试中,我确实得到了一个值: enter image description here