如何在 SQL 服务器 Table 适配器查询中指定通配符
How to specify a wildcard in a SQL Server Table Adapter query
我想知道如何在 SQL 服务器 table 适配器查询中指定通配符。我已经 here and here,并在 Microsoft 技术网站的其他地方进行了搜索,但找不到合适的示例。
我有一个 table 适配器查询,它应该 return 一个基于 WHERE
的单个值(table 适配器查询向导中的特定查询选择) ] 带有两个参数的子句。这是来自 table 适配器的查询,它可以很好地测试 Query Builder
中的查询并使用 SQL Management Studio 为特定数据库 table 编写查询。
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;
}
我得到一个空值。
我也试过用单引号将包含 11%(来自我的示例)的参数括起来,但这也不起作用。
我试过了,QueryBuilder 不会解析它。
SELECT owner_name_1
FROM BuildingPermit.dbo.real_estate
WHERE (prop_addr_no LIKE @p1) AND (prop_addr_str = @p2)
这是我做的,很有效,希望对你有用。
1.- 在数据集设计器中右键单击 table 适配器,添加查询
2.- 使用 SQL 语句
3.- Select 其中 returns 单个值
4.- 打开查询生成器,它看起来像这样:
5.- 在我的测试中,我确实得到了一个值:
我想知道如何在 SQL 服务器 table 适配器查询中指定通配符。我已经 here and here,并在 Microsoft 技术网站的其他地方进行了搜索,但找不到合适的示例。
我有一个 table 适配器查询,它应该 return 一个基于 WHERE
的单个值(table 适配器查询向导中的特定查询选择) ] 带有两个参数的子句。这是来自 table 适配器的查询,它可以很好地测试 Query Builder
中的查询并使用 SQL Management Studio 为特定数据库 table 编写查询。
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;
}
我得到一个空值。
我也试过用单引号将包含 11%(来自我的示例)的参数括起来,但这也不起作用。
我试过了,QueryBuilder 不会解析它。
SELECT owner_name_1
FROM BuildingPermit.dbo.real_estate
WHERE (prop_addr_no LIKE @p1) AND (prop_addr_str = @p2)
这是我做的,很有效,希望对你有用。
1.- 在数据集设计器中右键单击 table 适配器,添加查询
2.- 使用 SQL 语句
3.- Select 其中 returns 单个值
4.- 打开查询生成器,它看起来像这样:
5.- 在我的测试中,我确实得到了一个值: