我试图弄清楚如何在SQL Server表适配器查询中指定通配符。我已经here和here,并在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)
答案 0 :(得分:2)
这就是我所做的,而且它有效,我希望它对你有用。
1.-在数据集设计器中右键单击表适配器,添加查询
2.-使用SQL Satatements
3.-选择哪个返回单个值
4.-打开查询构建器,它看起来像这样:
5.-在我的测试中,我确实得到了一个值: