DAL中的一句sql总是提示'@pagesize'附近有语法错误。

我的页面一运行就提示‘@pagesize‘ 附近有语法错误。但是我在数据库里直接查询,把那些参数替换掉就OK,这句SQL我不知道到底错在哪里

C# code

string sql = "select top @pagesize from member where userid not in(select top(@pagesize*(@pagecount-1)) userid from member order by userid) order by userid";

-----------------------------------------这里是使用这句SQL的方法--------------------------------

C# code

/// <summary> /// 分页获取用户 /// </summary> /// <param name="pageSize">每页用户数</param> /// <param name="pageCount">第几页</param> /// <returns></returns> public DataTable GetUser(int pageSize, int pageCount) { string sql = "select top @pagesize from member where userid not in(select top(@pagesize*(@pagecount-1)) userid from member order by userid) order by userid"; SqlParameter[] parameters = new SqlParameter[2]; parameters[0] = new SqlParameter("@pagesize", SqlDbType.Int); parameters[0].Value = pageSize; parameters[1] = new SqlParameter("@pagecount", SqlDbType.Int); parameters[1].Value = pageCount; return new SqlDbHelper(connectionString).ExecuteDataTable(sql, CommandType.Text, parameters); //todo:必须将上面的代码修改正确! /* string sql = "select top 20 * from member"; return new SqlDbHelper(connectionString).ExecuteDataTable(sql); */ }

-------------------------------这里是ExecuteDataTable方法---------------------------------------------- ExecuteDataTable是周金桥老师写的那个SqlDbHelper数据库操作的通用类里的 下面是SqlDbHelper中ExecuteDataTable的代码

C# code

/// <summary> /// 执行一个查询,并返回查询结果 /// </summary> /// <param name="sql">要执行的SQL语句</param> /// <param name="commandType">要执行的查询语句的类型,如存储过程或者SQL文本命令</param> /// <param name="parameters">Transact-SQL 语句或存储过程的参数数组</param> /// <returns></returns> public DataTable ExecuteDataTable(string sql, CommandType commandType, SqlParameter[] parameters) { DataTable data = new DataTable();//实例化DataTable,用于装载查询结果集 using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand command = new SqlCommand(sql, connection)) { command.CommandType = commandType;//设置command的CommandType为指定的CommandType //如果同时传入了参数,则添加这些参数 if (parameters != null) { foreach (SqlParameter parameter in parameters) { command.Parameters.Add(parameter); } } //通过包含查询SQL的SqlCommand实例来实例化SqlDataAdapter SqlDataAdapter adapter = new SqlDataAdapter(command); adapter.Fill(data);//填充DataTable } } return data; }

------回答---------

------其他回答(40分)---------

改成这样试试 top (@pagesize)

------回答---------

------其他回答(40分)---------

改成这样试试 top (@pagesize)

string strSql = @"select  m.* from MemberInfo m left join Dictionary d on m.RepresentativeName=d.Name  where 1=1 and m.DeleteFlag=0 ";             List<DbParameter> list = new List<DbParameter>();             if (!string.IsNullOrEmpty(name))             {                 strSql += " and m.MemberName  like @name";                 list.Add(new SqlParameter("name", "%"+name+"%"));             }             if (!string.IsNullOrEmpty(meetingSesName))             {                 strSql += " and [email protected]";                 list.Add(new SqlParameter("@meetingSesName", meetingSesName));             }             strSql += " order by d.Sort asc,convert(int,m.Sequence),convert(int,m.SerialNo)";             return base.ExecuteDataset(strSql, CommandType.Text,list.ToArray()).Tables[0].DefaultView;

DAL中的一句sql总是提示'@pagesize'附近有语法错误。

时间: 2024-12-28 11:31:32

DAL中的一句sql总是提示'@pagesize'附近有语法错误。的相关文章

HBuilder X 提示Setting.json格式语法错误

因为操作了复制文件,粘贴到另外一个文件夹,并运行.导致HBuilder X 报错关闭.提示是这样的 : 然后我打开了HBuilder X 中的设置,源码视图,看到weApp.devTools.path的设置是这样的:"C:/Program Files (x86)/Tencent/微信web开发者工具"C://Program Files (x86)//Tencent//微信web开发者工具//微信开发者工具.exe/"",这里的路径重复了.将后面重复的路径删除,再保存

怎样用一句sql,统计表中不同状态的行的个数?

数据库中的数据是这样的: 筛选出来的数据是这样的: 怎样用一句sql,把数据从数据库中筛选出来,实现上图的结果? 解决: select 系统名称, sum(case when 故障状态='已处理' then 1 else 0 end) as 已处理个数, sum(case when 故障状态='未处理' then 1 else 0 end) as 未处理个数, count(*) as 总个数 from 表名 group by 系统名称 链接:http://zhidao.baidu.com/lin

在MyEclipse中编辑和执行SQL

数据库资源管理器工具包括了一个智能的SQL编辑器.在SQL编辑器中可以打开一个数据库连接,使其可以执行SQL语句并自动完成SQL相关片段的执行.在本教程中,你将学习到: 启动和使用SQL代码完成功能 执行SQL语句 生成SQL查询和表创建的脚本 更改SQL命令分隔符 持续时间:10分钟 没有MyEclipse?立即下载 1. 启用SQL代码完成功能 SQL代码完成功能要求预装编辑器相关数据库的元数据.在默认的情况下,SQL代码完成功能是被禁用的,这是为了避免严重的性能问题,因为此功能可能导致在非

SQL Server 查询处理中的各个阶段(SQL执行顺序)

SQL 不同于与其他编程语言的最明显特征是处理代码的顺序.在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后被处理. 每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入.这些虚拟表对调用者(客户端应用程序或者外部查询)不可用.只是最后一步生成的表才会返回 给调用者.如果没有在查询中指定某一子句,将跳过相应的步骤.下面是对应用于SQL server 2000和SQL Server 2005的各个逻辑

php函数mysql_query批量执行多句sql语句

正常情况下用php的mysql_query函数是不能批量执行多句CREATE TABLE之类的语句的: 而有些场景:比如说有一个sql备份文件.又或是程序初始化时创建数据表结构的时候需要批量执行文件中的sql语句: 解决这个问题可以用explode函数按';'号把sql语句拆成数组:再通过循环执行mysql_query即可:因为每句sql都是以';'号结束的: 但是考虑到sql语句中可能有实体符号  之类的:如果按';'号来拆:容易误伤:所以用preg_split正则来拆更靠谱: 示例环境: s

一句SQL语句,可能就是一个定时炸弹

一句小小的SQL语句,在数据量很小的时候,可能是一句相当完美的语句.但是随着数据量的不断增加,你是否能想到他带来的灾难性的后果呢?那么,什么样的SQL语句才算好的语句呢? 对于SQL语句,很多人上来就是select *,不用想,对于数据量大的表来说,这样的语句无非是致命的.而一个好的数据库管理员,在设计数据库时,就应该想到当数据量很大很大时,就应当有所准备. 最近在做一个查询统计, 因为一直用本机的数据库,数据量不是很大,即使查询时等1s也没什么感觉,但是当连接到真正的数据库上,那等待的感觉,只

一句SQL实现MYSQL的递归查询

众所周知,目前的mysql版本中并不支持直接的递归查询,但是通过递归到迭代转化的思路,还是可以在一句SQL内实现树的递归查询的.这个得益于Mysql允许在SQL语句内使用@变量.以下是示例代码. 创建表格 CREATE TABLE `treenodes` ( `id` int , -- 节点ID `nodename` varchar (60), -- 节点名称 `pid` int -- 节点父ID ); 插入测试数据 INSERT INTO `treenodes` (`id`, `nodenam

Hibernate中Caused by: java.sql.SQLException: Field &#39;address_id&#39;doesn&#39;t have a default value

在学习Hibernate中,相信很多人都遇到过: Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not execute statement Caused by: java.sql.SQLException: Field 'address_id' doesn't have a default value 很是纳闷,明明我的address_id是主键,为毛还提示我不存在默认值?主

select count(1) from table where ..这句sql语句的作用

作用是计算一共有多少符合条件的行.1并不是表示第一个字段,而是表示一个固定值,count(1)和count(2)效果是一样的 count(*),执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的方式效率稍微低一些.count(字段值),将返回符合条件的非空数量 1.查询所有数据,列出7列数据 2.使用count(1)查询结果,返回7 3.使用count(*)查询结果,返回7 4.括号中是表中的字段值,count(字段值),返回表中非空的C_Id字段下的数据数量