我们正在研究日志查看器.该用户可以选择按用户,严重程度等进行过滤.在Sql中我会添加到查询字符串,但我想用Linq来做.我怎样才能有条件地添加where-clause?
目前,我的代码(PHP)中包含太多SQL查询.例如...
// not a real example, but you get the idea...
$results = $db->GetResults("SELECT * FROM sometable WHERE iUser=$userid");
if ($results) {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
我正在研究使用存储过程来减少这种情况并使事情变得更加强大,但我有一些担忧.
我在网站上使用了数百种不同的查询,其中很多都非常相似.当从上下文(使用结果的代码)中删除所有这些查询并将其置于数据库的存储过程中时,我应该如何管理它们?
我想问一下其他程序员如何生成动态SQL字符串以作为SQLCommand对象的CommandText执行.
我正在生成包含用户生成的"WHERE"子句和SELECT字段的参数化查询.有时查询很复杂,我需要对如何构建不同部分进行大量控制.
目前,我使用许多循环和switch语句来生成必要的SQL代码片段并创建所需的SQL参数对象.这种方法很难遵循,它使维护成为一项真正的苦差事.
这样做有更清洁,更稳定的方法吗?
有什么建议??
编辑:要添加我以前的帖子的详细信息:
由于要求,我无法真正模拟我的查询.它只是变化太大了.
我将展示一些代码(恐怖!),以便你们知道我正在处理什么.
sqlCmd.CommandText = "DECLARE @t Table(ContactId int, ROWRANK int" + declare
+ ")INSERT INTO @t(ContactId, ROWRANK" + insertFields + ")"//Insert as few cols a possible
+ "Select ContactID, ROW_NUMBER() OVER (ORDER BY " + sortExpression + " "
+ sortDirection + ") as ROWRANK" // generates a rowrank for each row
+ outerFields
+ " FROM ( SELECT c.id AS ContactID"
+ coreFields
+ …Run Code Online (Sandbox Code Playgroud)