大家一起来帮忙解决下这问题,急,在线等
为什么我调用 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