读书人

C#的SQL int参数附近有异常

发布时间: 2013-11-25 13:22:27 作者: rapoo

C#的SQL int参数附近有错误
字符串参数没有问题,问题在于整型变量,将字符串语句中的@number直接换成1是没有问题的,说明语法没有问题,那么整型参数是不是有什么细节需要设置?

protected void Page_Load(object sender,EventArgs e)
{
if(!IsPostBack)
{
SqlDataReader MyReader;
SqlParameter CityName;
SqlParameter number;

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DSN_NorthWind"].ConnectionString);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select top @number * from Customers where city=@city";

number = new SqlParameter();
number.ParameterName = "@number";
number.SqlDbType = SqlDbType.Int;
number.Value = 1;

CityName = new SqlParameter();
CityName.ParameterName = "@city";
CityName.SqlDbType = SqlDbType.VarChar;
CityName.Value = "Berlin";

cmd.Parameters.Add(CityName);
cmd.Parameters.Add(number);

conn.Open();
MyReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);

GridView1.DataSource = MyReader;
GridView1.DataBind();

cmd.Dispose();
conn.Dispose();
}
}

'@number' 附近有语法错误。

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: '@number' 附近有语法错误。
[解决办法]
http://stackoverflow.com/questions/1936496/sql-how-do-i-use-parameter-for-top-like-in-select-top-amount
2008以下可以加上括号
select top (@number)
[解决办法]
语法有问题,如2楼所说,要加括号: (@number)

读书人网 >C#

热点推荐