求助,SQL语句语法错误

sammea 2011-08-06 06:45:57
·语句原代码
StringBuilder strSql = new StringBuilder();
strSql.Append("select top " + pageSize);
strSql.Append(" " + fields + " from ");
strSql.Append(tableName + "where ");
strSql.Append(primaryKey + " ");
strSql.Append(((isAsc) ? "> " : "< "));
strSql.Append("( select ");
strSql.Append(((isAsc) ? "max" : "min"));
strSql.Append("(" + primaryKey);
strSql.Append(") from ( select top " + pageSize * (pageID - 1));
strSql.Append(" " + primaryKey + " from ");
strSql.Append(tableName + " ");
strSql.Append(((whereStr != "") ? "where " + whereStr + "" : ""));
strSql.Append(" order by " + orderKey + " ");
strSql.Append(((isAsc) ? "asc" : "desc"));
strSql.Append(" )) ");
strSql.Append(((whereStr != "") ? "and " + whereStr + "" : ""));
strSql.Append(" order by " + orderKey + " ");
strSql.Append(((isAsc) ? "asc" : "desc"));
在运行程序查询是提示:FROM 子句语法错误。

allCount记录总数
isAsc是否升序
primaryKey 主键
orderKey排序键
tableName表名
pageSize页大小
pageID页I
fields查询字段
whereStr查询条件
这条语句的意思是首先根据条件和排序获得结果集中的前(页大小X(页ID-1))条记录主键集合,然后根据查询条件和排序返回主键大于这些主键集合中的前pageSize条记录。

我把整条语句提出来:
"select top " + pageSize +" " + fields + " from " +tableName + "where " + primaryKey + " " +(isAsc) ? "> " : "< ") + "( select " +((isAsc) ? "max" : "min") +"(" + primaryKey + ") from ( select top " + (pageSize * (pageID - 1)) + " " + primaryKey + " from " +tableName + " " + ((whereStr != "") ? "where " + whereStr + "" : "") +" order by " + orderKey + " " + ((isAsc) ? "asc" : "desc") + " )) " + ((whereStr != "") ? "and " + whereStr + "" : "") +" order by " + orderKey + " " +((isAsc) ? "asc" : "desc")
大家帮忙分析一下,是哪里出错了?
...全文
51 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sammea 2011-08-06
  • 打赏
  • 举报
回复
非常感谢4楼5楼,真是一个空格问题。我看了一个小时,都看不出来。还是有问题发上来,多双眼睛看得清楚些啊。
暖枫无敌 2011-08-06
  • 打赏
  • 举报
回复
"select top " + pageSize +" " + fields + " from " +tableName + "where " + primaryKey + " " +(isAsc) ? "> " : "< ") + "( select " +((isAsc) ? "max" : "min") +"(" + primaryKey + ") from ( select top " + (pageSize * (pageID - 1)) + " " + primaryKey + " from " +tableName + " " + ((whereStr != "") ? "where " + whereStr + "" : "") +" order by " + orderKey + " " + ((isAsc) ? "asc" : "desc") + " )) " + ((whereStr != "") ? "and " + whereStr + "" : "") +" order by " + orderKey + " " +((isAsc) ? "asc" : "desc")

红色部分的where 前面加一个空格,谢谢!
huangwenquan123 2011-08-06
  • 打赏
  • 举报
回复
from " +tableName + "加个空格where
AcHerat 2011-08-06
  • 打赏
  • 举报
回复
楼主你传些参数进去再打印下吧!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧