我有一个查询,在这里我接受3个参数,所有参数都是可选的。但是 当一个参数出现时,数据将使用该参数和两个参数进行过滤 参数来自需要从这两个参数中过滤的数据。
在这里所有三个参数,如果两个参数有一个值,那么我将另一个参数作为空
传递问题是当两个参数出现而另一个是null时未在此查询中过滤
我这样的查询。
string NewsQuery = @"SELECT N.NID,N.NEWS,N.REFSEC,N.AUTHRIZED,N.USERID,N.REFERENCENO
FROM TBL_NEWS N
WHERE N.REFERENCENO=:ReferenceNo AND N.NID =:Nstatus AND N.USERID=:StaffNo";
cmd = db.GetSqlStringCommand(NewsQuery);
db.AddInParameter(cmd, "ReferenceNo", DbType.String, null);
db.AddInParameter(cmd, "Nstatus", DbType.String, NewsStatus);
db.AddInParameter(cmd, "StaffNo", DbType.String, userno);
答案 0 :(得分:2)
您需要在查询中添加OR子句以允许 NULL 参数值。
string NewsQuery = @“SELECT N.NID,N.NEWS,N.REFSEC,N.AUTHRIZED,N.USERID,N.REFERENCENO FROM TBL_NEWS N WHERE(N.REFERENCENO =:ReferenceNo OR:ReferenceNo IS NULL)AND (N.NID =:Nstatus OR:Nstatus IS NULL)AND(N.USERID =:StaffNo OR:StaffNo IS NULL)“;