SQL OleDb提供程序字符串参数 - 它是如何工作的?

时间:2011-07-17 06:23:07

标签: sql xsd sql-server-2000 oledb

我正在使用.xsd数据集可视化工具来帮助我构建SQL DAL。不幸的是,我连接的服务器是SQL Server 2000.所以从VS 2010开始,我唯一的提供商是OLE DB提供商。这有一些缺点。例如。 ?代替命名参数等。

查询文本部分时遇到问题。设计器中的查询如下所示:

SELECT * FROM table WHERE nvarcharcolumn1 LIKE '%' + ? + '%'

当我将此?的值插入%时,设计师可以正常使用此功能。 %不起作用,''也不起作用。

但是在我使用xsd“预览数据”后,它不适用于任何这些值。当从C#代码调用时,它也不起作用。

当我想要按字符串的一部分进行过滤并最终允许省略此参数时,如何正确使用字符串参数(一种可能性是为不需要的参数的每个组合创建查询,但它是太多的冗余代码IMO )。

2 个答案:

答案 0 :(得分:0)

SELECT * FROM table WHERE nvarcharcolumn1 LIKE '%<part of a string you want to search>%'

答案 1 :(得分:0)

你设置字符串的方式将打开你的SQL注入。你应该使用像

这样的参数
OleDbCommand cmd = new OleDbCommand( "SELECT * FROM table WHERE nvarcharcolumn1 LIKE ?", yourConnection );
cmd.Parameters.AddWithValue( "QmarkPlaceHolder", "%" + ValueLookingFor + "%" );

然后继续执行您的查询