ASP.NET 带参数的SQL语句
这样的一句带参数的SQL语句 编译器提示出错。select top @pageSize * from student
写成简单带参数的SQL语句进行传参,例如这样:
select * from student where id = @id
就不会报错。
我想top @pageSize这里出现了问题,不知道怎么解决。
用带参数的方式,用SQL语句:select top @pageSize * from student 把数据库里student表数据取出来就行。谢谢!
代码如下:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Bind();
}
}
protected void Bind()
{
string connstr = Server.MapPath(@"App_Data\student.mdb");
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + connstr + ";Persist Security Info=True");
conn.Open();
OleDbCommand cmd = new OleDbCommand("select top @pageSize * from student ", conn);
OleDbParameter[] paras = new OleDbParameter[] {
new OleDbParameter("@pageSize",5)
};
cmd.Parameters.AddRange(paras);
OleDbDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
GridView1.DataSource = dt;
GridView1.DataBind();
}
追问:我知道这样写有错,所以我才想知道怎么改正。我也不是在随心所欲的拼接字符串。而且这样也不是拼接字符串,这样是参数化传递。
像这样传递参数是可行的。我想用参数传递的形式,如果我是想拼接字符串的话,上面的代码我是可以做得到的。只是那样写不好看,也不安全。
select * from student where id = @id
OleDbParameter[] paras = new OleDbParameter[] {
new OleDbParameter("@id",5)
};
cmd.Parameters.AddRange(paras);
这样是可以传递。
我只想找到解决的方法,如果你能帮我解决这个问题,我在这里先说声谢谢。