参数中的动态where子句我目前正在尝试为SqlCommand构建一个where子句。类似myCommand.CommandText="SELECT*"+"FROMTABLE1"+"@whereClause";//我用StringBuilder构建where子句myCommand.Parameters.AddWithValue("@whereClause"theClause.ToString());但似乎这是不可能的。我得到异常:SqlExceptionIncorrectsyntaxnear'@whereClause'我想做这样的事情的原因是因为我想避免对数据库进行X调用,所以我将排序和过滤留给服务器。反正有做类似的事情吗?/edit:where子句看起来像这样WHERE(TABLE1.COL1='thevalue'ORTABLE1.COL1='anothervalue'ORTABLE1.COL1='thisvalue'...)/edit最后这是由于一个愚蠢的拼写错误错误...我更改为不使用参数化查询。我会赞成那些帮助我的人的答案。即使它不能解决我的(愚蠢的)错误,我也会将其标记为更接近解决我的情况的答案您似乎正在尝试将整个WHERE子句添加为参数-这是行不通的!因此,假设您需要从TABLE1WHEREField1=@Field1Value和Field2=@Field2Value构建类似这样的东西,并假设publicclassWhereField{publicstringFieldName{get;set;}publicobjectFieldValue{get;set;}publicstringComparisonOperator{get;set;}}然后你有这样的东西:varwhereClause=newStringBuilder();foreach(WhereFields中的var字段){whereClause.Append(field.FieldName).Append(field.ComparisonOperator).Append("@").Append(field.FieldName).Append("Value").Append("AND");//同时添加参数:myCommand.Parameters.AddWithValue("",field.FieldName+"Value");}//干净地关闭where子句whereClause.Append("1=1");现在你可以执行myCommand.CommandText="SELECT*"+"FROMTABLE1WHERE"+whereClause.ToString();),参数只允许出现在command.Parameters中。要构建动态Where子句,您必须基于条件和字符串连接构建查询,然后相应地添加参数。类似于:sb.Append("SELECT*FROMTABLE1");if(someCondition){sb.Append("WHEREXColumn=@XColumn");myCommand.Parameters.AddWithValue("@XColumn","SomeValue");}else{sb.Append("WHEREYColumn=@YColumn");myCommand.Parameters.AddWithValue("@YColumn","SomeOtherValue");}myCommand.CommandText=sb.ToString();以上大概就是你需要的C#学习教程:参数中动态where子句分享的所有内容,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——我的Command。CommandText="SELECT*"+"FROMTABLE1WHERE"+"@whereClause";本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
