日期:2014-05-17  浏览次数:20453 次

c#调用存储过程的一些疑问
有在以前的资料里搜索关于如何调用存储过程,在自己测试的时候,产生一些问题,来寻求各位大大们的解答。
我的目的是,调用存储过程只对表进行更新和插入,不需要返回任何值。

SqlConnection con = db.GetCon(); //这列是打开数据连接字符
SqlCommand cmd = new SqlCommand("QHstatus",con);//存储过程名
//para0 = new SqlParameter("@qhstring", Status.Text);    这里是否需要每个PARA都要定义呢? 
//para1 = new SqlParameter("@TestID",int.Parse(Request["tid"].ToString()));
//para2 = new SqlParameter("@DocID",Request["docid"].ToString());
//cmd.Parameters.Add("@qhstring",NText,20,Status.Text);   若用这种,我不明白里面4个参数分别代表什么含义
cmd.CommandType = CommandType.StoredProcedure;
tyr
{
    con.open();
    cmd.ExecuteNonQuery();
    con.close();
}
catch
{
}


有人能解释下相关错误么? 
------解决方案--------------------
你有什么错误
------解决方案--------------------
你的要求,像执行 select 语句一样调用就行了

CommandType.StoredProcedure 没必要
------解决方案--------------------
直接用啊 多的话用空格吧 
------解决方案--------------------

//para0 = new SqlParameter("@qhstring", Status.Text);    这里是否需要每个PARA都要定义呢? //para1 = new SqlParameter("@TestID",int.Parse(Request["tid"].ToString()));//para2 = new SqlParameter("@DocID",Request["docid"].ToString());//cmd.Parameters.Add("@qhstring",NText,20,Status.Text);   若用这种,我不明白里面4个参数分别代表什么含义

你的存储过程有几个参数 Parameters就添加几个
而且类型要对应 名称要对应
------解决方案--------------------
参数 Parameters
比如:

int p1=1;
string p2="1";
SqlParameter[] parameters = {
new SqlParameter("@p1", SqlDbType.Int,4),
new SqlParameter("@p2", SqlDbType.VarChar,20),
        new SqlParameter("@p3", SqlDbType.Int,4)};
parameters[0].Value = p1;//赋值
parameters[1].Value = p2;//赋值                     
parameters[2].Direction = ParameterDirection.Output;//这里是输出参数的表示方法
cmd.Parameters.Add(parameters);  //给SqlCommand指定参数
------
你这个cmd.Parameters.Add("@qhstring",NText,20,Status.Text); 
4个参数分别为参数名、类型、类型的范围、参数的值.
这个你完全可以查MSDN 要学会查MSDN.

------解决方案--------------------
那几个参数 ,其实就是你在存储过程中需要用到的参数的一些属性而已
------解决方案--------------------
其实人家回答你完全是害了你,,如此简单的问题,不自己查,就会丧失学习的基本能力的
------解决方案--------------------
引用:
其实人家回答你完全是害了你,,如此简单的问题,不自己查,就会丧失学习的基本能力的

一语中的
------解决方案--------------------
额,你没有给存储过程的参数赋值把