C#中的SQL问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 12:13:03
在程序中使用,假设已经有有一个连接叫sqlConnection
SqlCommand sqlCommand = new SqlCommand(SELECT TOP @pageSize * FROM mytb ");
sqlCommand.Connection = sqlConnection;

SqlParameter sqlParameter = new SqlParameter("@pageSize",DbType.Int32);
sqlParameter.Value = pageSize;

sqlCommand.Parameters.Add(sqlParameter);

在这样加了值后,SQL运行时会报“@pageSize"附近有错。去查了下说不能直接把@XX这种加到TOP后面,麻烦解释下这种情况为什么不能这么写,还是说这里的Parameters.add的这些参数全部是会转成SQL存储过程的方式去运行?
DataBase 是 Sqlserver 2000

明显,是你的SQL写得有问题咯.
SELECT TOP @pageSize * FROM mytb
当你写这个语句的时候,SQL会把SELECT后的当字段处理了,SELECT没有这样写的,你这个是语法错误.具体你可以发个信给MS,请他们解释一下他们的SQL引擎不能解释.所以,把@pageSize放在那里一定出错,如果你是要做分页的话也不是这样分的~
你的语句改下:
SET ROWCOUNT @pageSize
SELECT * FROM mytb
放到存储过程里做.

根据你的SQL语句,看的话:@pageSize应该是返回出来的一个值,
select Top 值(1或2或3或5...)* from mytb 很明显,语句是不怎么可靠,以至于错误。
一般这样的语句,最好采取这样的形式:
select Top @pageSize from mytb where 条件

你的sql谁教你的哎,一个天才被耽误了!语句错误!

sql server是不允许这样的语句的SELECT TOP @pageSize * FROM mytb,在top 后应该是标量值,而@pageSize 是变量,所以会出错