2011-07-17 22 views
0

我正在使用.xsd数据集可视化工具来帮助我构建SQL DAL。不幸的是,我要连接的服务器是SQL Server 2000.因此,从VS 2010开始,我唯一的提供者是OLE DB提供者。这有一些缺点。例如。 ?而不是命名参数等SQL OleDb提供程序字符串参数 - 它是如何工作的?

我有查询文本部分的一个问题。在设计师的查询看起来是这样的:

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

这从设计师的工作得很好,当我为这个?作为%插入值。 %不起作用,''也不起作用。

但之后我用XSD“预览数据”,它不与任何这些值的工作。而从C#代码调用时也不起作用。

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

回答

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

您的查询就会让你开阔的SQL注入 – DRapp

0

你有字符串设置的方式将打开你的SQL注入。你真的应该使用参数类似

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

然后继续你的查询执行

相关问题