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

大家一起来帮忙解决下这问题,急,在线等

为什么我调用 FillDataSet这方法里面传的是存储过程并且参数是null可以通过执行?如果参数不为null就能通过?我这方法是sql语句,为什么当参数为null并且传个存储过程名就可以通过?怎样判断让他只能传sql语句而不能传存储过程名?大家帮帮忙啊!!!

public static DataSet FillDataSet(string sql, SqlParameter[] parameter)
        {
            DataSet ds = new DataSet();
            using(SqlConnection conn = new SqlConnection(connString))
            {
                SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
                //设置参数
                AddParameter(adapter.SelectCommand, parameter);
                adapter.Fill(ds);
            }
            return ds;
        }



        /// <summary>
        /// 添加参数
        /// </summary>
        /// <param name="cmd"></param>
        /// <param name="parameter"></param>
        private static void AddParameter(SqlCommand cmd, SqlParameter[] parameter)
        { 
            if(cmd != null && parameter != null)
            {
                foreach(SqlParameter p in parameter)
                {
                    cmd.Parameters.Add(p);
                }
            }
        }
--------------------编程问答-------------------- 我晕啊 我晕啊


不管是存储过程还是SQL语句,都是string 字符串啊。。。
你想怎么着。。 --------------------编程问答-------------------- 但问题我没有写commanType.storeProcedure 啊,它怎么会直接找到我的存储过程名?而且还能执行? --------------------编程问答-------------------- 接个分。。。。 --------------------编程问答-------------------- 大家帮忙一起想想啊。 --------------------编程问答-------------------- 缓冲的问题吧 --------------------编程问答-------------------- 缓存可能原因 --------------------编程问答-------------------- 代码上再考虑 --------------------编程问答-------------------- 怎样判断让他只能传sql语句而不能传存储过程名?

看看他的字符串是否包含 select update 之类的关键字

这样不好

通过CommandType来限制呗
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,