我正在使用.xsd数据集可视化工具来帮助我构建SQL DAL。不幸的是,我连接的服务器是SQL Server 2000.所以从VS 2010开始,我唯一的提供商是OLE DB提供商。这有一些缺点。例如。 ?
代替命名参数等。
查询文本部分时遇到问题。设计器中的查询如下所示:
SELECT * FROM table WHERE nvarcharcolumn1 LIKE '%' + ? + '%'
当我将此?
的值插入%
时,设计师可以正常使用此功能。 %
不起作用,''
也不起作用。
但是在我使用xsd“预览数据”后,它不适用于任何这些值。当从C#代码调用时,它也不起作用。
当我想要按字符串的一部分进行过滤并最终允许省略此参数时,如何正确使用字符串参数(一种可能性是为不需要的参数的每个组合创建查询,但它是太多的冗余代码IMO )。
答案 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 + "%" );
然后继续执行您的查询