***************问一个调用存储过程的问题************

sleeping100 2003-12-12 01:41:03
public static int ExecuteStoredPro(string StoredProName,SqlParameter[] Parameters,ArrayList Values)
{
SqlCommand myCmd=new SqlCommand(StoredProName,myConn);
myCmd.CommandType=CommandType.StoredProcedure;
for(int i=0;i<Parameters.Length;i++)
{
myCmd.Parameters.Add(Parameters[i].Value=Values[i]);

}
try
{
OpenConn();
int RecordCount=myCmd.ExecuteNonQuery();
return RecordCount;
}
catch(System.Data.SqlClient.SqlException e)
{
throw new Exception(e.Message);
}
finally
{
myCmd.Dispose();
CloseConn();
}
}
我看别人的代码抄了这样一个调用存储过程的方法,
但是却不懂得调用,
SqlParameter [] GoodsParameter=new SqlParameter();
GoodsParameter[0].Value=("@ProName",SqlDbType.Char,10);
这样子却是错误,
调用的时候应该怎样定义SqlParameter呢,大家把教我一下,谢谢!

...全文
76 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sleeping100 2003-12-12
其实是一个定义SqlParameter数组的问题,
已经找到办法了,
SqlParameter[] GoodsParameters= new SqlParameter[] {
new SqlParameter("@ProNo",SqlDbType.Char,10),
new SqlParameter("@FacNo",SqlDbType.Char,10),
new SqlParameter("@BraName",SqlDbType.Char,10),
new SqlParameter("@StyName",SqlDbType.Char,10),
new SqlParameter("@ProName",SqlDbType.VarChar,50),
new SqlParameter("@InPrice",SqlDbType.Float,8),
new SqlParameter("@SalePrice",SqlDbType.Float,8),
};

这样自定义就可以了,哈哈!!!
  • 打赏
  • 举报
回复
dragonsuc 2003-12-12
SqlParameter[] parms = new SqlParameter[] {
new SqlParameter("@ProName", SqlDbType.VarChar, 80),
};

parms[0].Value="yourchar";

  • 打赏
  • 举报
回复
iyond 2003-12-12
如果要这样实现,你必须先得到存储过程中的参数,看看下面这篇文章:
http://search.csdn.net/expert/topic/52/5202/2003/5/20/1807751.htm
  • 打赏
  • 举报
回复
sleeping100 2003-12-12
其实我的目的是为了省去
myCommand.Parameters["@aaa"].Value =aaa;
myCommand.Parameters["@bbb"].Value =bbb;
这样子一个一个来设定值,
而通过一个循环来设定值,谢谢!
  • 打赏
  • 举报
回复
Rotaxe 2003-12-12
试一下
myCmd.Parameters.Add(Parameters[i]).Value=Values[i];
  • 打赏
  • 举报
回复
sleeping100 2003-12-12
楼上的几位,你们的写法,都要一个一个设定存储过程参数的值

我的目的是定义一个参数集合,一个值集合,然后通过循环来设定值,
for(int i=0;i<Parameters.Length;i++)
{
myCmd.Parameters.Add(Parameters[i].Value=Values[i]);

}
怎么样做到呢??

  • 打赏
  • 举报
回复
轻飘飘D 2003-12-12
public string testadd(string aaa,string bbb)
{
string my_DSN="server=(local);database=数据库;user id=用户;password=密码";
SqlConnection myConnection = new SqlConnection(my_DSN);
SqlCommand myCommand = new SqlCommand("testadd");

myCommand.CommandType = CommandType.StoredProcedure;

myCommand.Parameters.Add(new SqlParameter("@aaa", SqlDbType.NVarChar, 10));
myCommand.Parameters.Add(new SqlParameter("@bbb", SqlDbType.NVarChar, 10));

myCommand.Parameters["@aaa"].Value =aaa;
myCommand.Parameters["@bbb"].Value =bbb;

SqlTransaction myTrans;
myConnection.Open();
myCommand.Connection = myConnection;
myTrans = myConnection.BeginTransaction();
myCommand.Transaction = myTrans;

try
{
myCommand.ExecuteNonQuery();
myTrans.Commit();
return "1";
}
catch(SqlException SQLexc)
{
myTrans.Rollback();
return SQLexc.Message;
}
finally
{
myConnection.Close();
}


}
  • 打赏
  • 举报
回复
???2008 2003-12-12
db中要有存储过程先。
  • 打赏
  • 举报
回复
cyp503 2003-12-12
SqlParameter mySqlParameter = new SqlParameter("@ProName",SqlDbType.Char,10);
mySqlParameter.Value="hello";

myCommand.Parameters.Add(mySqlParameter);
  • 打赏
  • 举报
回复
相关推荐
发帖
.NET社区
加入

6.0w+

社区成员

.NET技术交流专区
帖子事件
创建了帖子
2003-12-12 01:41
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。