你如果不用exec,那就需要设置命令的类型了,在后面加上一个设置SqlCommand命令类型的代码即可:
cmd.CommandType = CommandType.StoredProcedure;
(StoredProcedure代表的是存储过程)
不加exec会报错是你没有指定一下执行语句的种类,要设一下
cmd.CommandType = CommandType.StoredProcedure;
这个里面的exec不用加,加了有问题了
传参的话
如果是输出参数的可以先写一下
比方说查个总记录条数
SqlParameter outPara = new SqlParameter();
sp.ParameterName = "@ResCnt";//参数名
sp.DbType = DbType.Int32;//类型
sp.Direction = ParameterDirection.Output;//方向
SqlParameter[] args=new SqlParameter[]
{
outPara;//上面的输出参数
//以下可以放多个参数,如
new SqlParameter("@pageIndex",pageIndex),//传输入参数
……
};
sqlCommand cmd=new SqlCommand("存储过程名");
//设置为存储过程
cmd.CommandType =CommandType.StoredProcedure;
//设置参数
SqlParameter[] parameters = {
new SqlParameter("@ID", SqlDbType.Int,4),
new SqlParameter("@Name", SqlDbType.NVarChar,50)
};
cmd.Parameters.AddRange(parameters );
这样就可以了
SqlCommand 不是new出来的 是用你的数据库连接变量创建出来的
否则SqlCommand没有连接 怎么执行?
cmd.CommandType = CommandType.StoredProcedure; 设置命令类型为存储过程
这是我写的一个分页存储过程,刚好,有输入参数也有输出参数,自己看看吧,注释我都写了,自己摸索下。
SqlConnection conn=SqlHelper.GetCon();
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "MemberPhonePage1";//设置命令文本,存储过程名称
cmd.CommandType = CommandType.StoredProcedure;//设置命令类型为存储过程
//输入参数
cmd.Parameters.AddWithValue("@pageindex", pageindex);
cmd.Parameters.AddWithValue("@rsCnt",5);
cmd.Parameters.AddWithValue("@outal",outal);
//输出参数
//总页数
SqlParameter sp = new SqlParameter();
sp.ParameterName = "@pagecnt";
sp.DbType = DbType.Int32;
sp.Direction = ParameterDirection.Output;
//当前页码
SqlParameter nowcnt = new SqlParameter();
nowcnt.ParameterName = "@nowcnt";
nowcnt.DbType = DbType.Int32;
nowcnt.Direction = ParameterDirection.Output;
cmd.Parameters.Add(sp);
cmd.Parameters.Add(nowcnt);
//执行命令
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
gvMemberPhone.DataSource = dt;
gvMemberPhone.DataBind();
标签:asp,net,调用