关于存储过程

sw4423512 2012-05-10 11:25:08
在C#中对数据,添加修改,用存储过程怎么实现的,我不太懂
比如像下面的代码,我一点不懂
public string AddStuInfo(string stuid, string stuname, string stusex, string studay, string studepart, string stuclass, string stuidcard, string stuaddr, string stutel, string stuextfield)
{
SqlParameter[] parameters={
new SqlParameter("@Id",SqlDbType.Int,4),
new SqlParameter("@StudentID",SqlDbType.NVarChar,50),
new SqlParameter("@StudentName",SqlDbType.NVarChar,50),
new SqlParameter("@StudentSex",SqlDbType.NVarChar,50),
new SqlParameter("@StudentDate",SqlDbType.NVarChar,50),
new SqlParameter("@DepartName",SqlDbType.NVarChar,50),
new SqlParameter("@ClassName",SqlDbType.NVarChar,50),
new SqlParameter("@StudentIDCard",SqlDbType.NVarChar,50),
new SqlParameter("@Address",SqlDbType.NVarChar,50),
new SqlParameter("@StudentTel",SqlDbType.NVarChar,50),
new SqlParameter("@ExtendField",SqlDbType.NVarChar,50)};
parameters[0].Direction=ParameterDirection.Output;
parameters[1].Value=stuid;
parameters[2].Value=stuname;
parameters[3].Value=stusex;
parameters[4].Value=studay;
parameters[5].Value=studepart;
parameters[6].Value=stuclass;
parameters[7].Value=stuidcard;
parameters[8].Value=stuaddr;
parameters[9].Value=stutel;
parameters[10].Value=stuextfield;
return DBHelper.ExecuteCommand("StudentInfoADD",parameters).ToString();

}
public static int ExecuteCommand(string stor, SqlParameter[] paras)
{
SqlCommand cmd = new SqlCommand(stor, Connection);
cmd.CommandType = CommandType.StoredProcedure;
foreach (SqlParameter para in paras)
{
if (para != null)
{
if ((para.Direction == ParameterDirection.InputOutput || para.Direction == ParameterDirection.Input) && (para.Value == null))
{
para.Value = DBNull.Value;
}
cmd.Parameters.Add(para);
}
}
return cmd.ExecuteNonQuery();
}
...全文
124 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hsg77 2012-05-11
  • 打赏
  • 举报
回复
可理解:函数带有多个参数StudentInfoADD(int Id,string StudentID,......)的调用方法
这些参数必须用SqlParameter类来封装进行传值操作
然后交给SqlCommand类进行执行操作。
moonwrite 2012-05-10
  • 打赏
  • 举报
回复
那么多参数
为什么不做成实体类呢
test2050 2012-05-10
  • 打赏
  • 举报
回复
2楼解释了,希望你能看懂。再不懂就网上找找基本资料。
test2050 2012-05-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
不需要懂,会用就行了,这里的参数一一对应存储过程里面参数
[/Quote]
不懂时大多不会用哈哈。出了错不知道怎么回事。只有搞懂了用起来才得心应手。
xboxeer 2012-05-10
  • 打赏
  • 举报
回复

public string AddStuInfo(string stuid, string stuname, string stusex, string studay, string studepart, string stuclass, string stuidcard, string stuaddr, string stutel, string stuextfield)
{
SqlParameter[] parameters={
new SqlParameter("@Id",SqlDbType.Int,4),
new SqlParameter("@StudentID",SqlDbType.NVarChar,50),
new SqlParameter("@StudentName",SqlDbType.NVarChar,50),
new SqlParameter("@StudentSex",SqlDbType.NVarChar,50),
new SqlParameter("@StudentDate",SqlDbType.NVarChar,50),
new SqlParameter("@DepartName",SqlDbType.NVarChar,50),
new SqlParameter("@ClassName",SqlDbType.NVarChar,50),
new SqlParameter("@StudentIDCard",SqlDbType.NVarChar,50),
new SqlParameter("@Address",SqlDbType.NVarChar,50),
new SqlParameter("@StudentTel",SqlDbType.NVarChar,50),
new SqlParameter("@ExtendField",SqlDbType.NVarChar,50)};//在代码中声明SQL存储过程参数
parameters[0].Direction=ParameterDirection.Output;
parameters[1].Value=stuid;
parameters[2].Value=stuname;
parameters[3].Value=stusex;
parameters[4].Value=studay;
parameters[5].Value=studepart;
parameters[6].Value=stuclass;
parameters[7].Value=stuidcard;
parameters[8].Value=stuaddr;
parameters[9].Value=stutel;
parameters[10].Value=stuextfield;//上面的是给存储过程参数赋值
return DBHelper.ExecuteCommand("StudentInfoADD",parameters).ToString();//执行StudentInfoADD这个存储过程,方法第二个参数是给StudentInfoADD存储过程的参数

}
public static int ExecuteCommand(string stor, SqlParameter[] paras)
{
SqlCommand cmd = new SqlCommand(stor, Connection);
cmd.CommandType = CommandType.StoredProcedure;//表面Command的类型为存储过程 对应的Text的就是直接执行SQL语句
foreach (SqlParameter para in paras)
{
if (para != null)
{
if ((para.Direction == ParameterDirection.InputOutput || para.Direction == ParameterDirection.Input) && (para.Value == null))//如果是输入参数且参数为null,则将参数值设置为DBNull 就是SQL中代码NULL的值
{
para.Value = DBNull.Value;
}
cmd.Parameters.Add(para);
}
}
return cmd.ExecuteNonQuery();//执行非查询形式的SQL语句
}
LittleMo_2012 2012-05-10
  • 打赏
  • 举报
回复
不需要懂,会用就行了,这里的参数一一对应存储过程里面参数

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧