在C#中的DataTable.Select方法中能否添加参数?

5

我想知道是否可以在datatable.select(expression)中添加参数。例如

string query="Name=@Name";          
//dt is comming from database.
dt.Select(query);

如何添加参数@Name。我需要比较一个包含单引号的值,但在上述情况下会失败。

提前致谢。

2个回答

8
你可以使用 String.Format,但需要使用两个单引号对单引号进行转义:
string query = string.Format("Name='{0}'", name.Replace(@"'", "''"));
var rows = dt.Select(query);

或者,如果你想使用 Like

string query = string.Format("Name LIKE '%{0}%'", name.Replace(@"'", "''"));

(请注意,DataTable 不容易遭受SQL注入攻击,因为它是一个内存对象)

谢谢回复,我不担心 SQL 注入问题。我需要比较一个包含单引号的值,在上述情况下它会失败。 - user1685652
@user1685652:由于我通常使用LINQ,因此我忘记了您需要转义单引号。您只需要将它们加倍,我已相应地编辑了我的答案。 - Tim Schmelter

-2

你只能传递表达式到 Select 方法。

如果需要动态传递参数,可以尝试以下方法。

string Exp = "Name ='" + variable + "'";

dt.select(Exp);

-1,不讨论如何转义“variable”(这也是使用参数的重点)。 - binki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接