当前位置:编程学习 > C#/ASP.NET >>

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);
这样是可以传递。

 

我只想找到解决的方法,如果你能帮我解决这个问题,我在这里先说声谢谢。

答案:select top @pageSize * from student 

本来就是错误的语法,你这样的语法在数据库是无法执行的。

 

你的@pagesize应该作为整形变量或者参数传递给数据库引擎执行,而不是你随心所欲拼接的字符串。

我不想看代码,可以上图看看报错提示吗?

上一个:asp.net mvc是什么?
下一个:用asp.net(c#)语言

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,