问。在C#里怎么执行执行一个带参数的存储过程。 如题,并且我想有一个参数返回到C#里。应该怎么做?详细一点,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SqlConnection conn = new SqlConnection(连接字符串);conn.Open();SqlCommand comm = new SqlCommand();comm.Connection = conn;comm.CommandType = CommandType.StoredProcedure;comm.CommandText = 存储过程名称;SqlParameter pm;pm = comm.Parameters.Add("@ID", SqlDbType.Int);pm.Value = 1;comm.ExecuteNonQuery(); Create Procedure TestProcedure2(@au_idIN varchar (11)) //存储过程As/* set nocount on */select count (T.title)from authors as A join titleauthor as TA onA.au_id=TA.au_idjoin titles as Ton T.title_id=TA.title_idwhere A.au_id=@au_idINReturn(5)string strCount;SqlConnection PubsConn = new SqlConnection("Data Source=server;integrated " +"Security=sspi;initial catalog=pubs;");SqlCommand testCMD = new SqlCommand("TestProcedure2", PubsConn);testCMD.CommandType = CommandType.StoredProcedure;SqlParameter RetVal = testCMD.Parameters.Add("RetVal", SqlDbType.Int);RetVal.Direction = ParameterDirection.ReturnValue;SqlParameter IdIn = testCMD.Parameters.Add("@au_idIN", SqlDbType.VarChar, 11);IdIn.Direction = ParameterDirection.Input;IdIn.Value = "213-46-8915";PubsConn.Open();strCount = testCMD.ExecuteScalar().ToString() ;Console.WriteLine("Number of Rows:" + strCount);Console.WriteLine("Return Value:" + RetVal.Value);不明白,在存储过程里只有一个参数,而在程序里却写了两个参数。。为什么啊? 因为存储过程有一个Return返回值,所以多创建了一个参数来接收这个返回值。SqlParameter RetVal = testCMD.Parameters.Add("RetVal", SqlDbType.Int);RetVal.Direction = ParameterDirection.ReturnValue;你没见到Direction 的值是ParameterDirection.ReturnValue吗? SqlCommand cmdTemp; SqlParameter spTemp; string strI; OpenDataBase(); //加密数据 strPwd=FormsAuthentication.HashPasswordForStoringInConfigFile(strPwd,"md5"); cmdTemp=new SqlCommand("UserLogln",conn); cmdTemp.CommandType=CommandType.StoredProcedure; cmdTemp.Parameters.Add ("@UserID",strUserName); cmdTemp.Parameters.Add ("@UserPwd",strPwd); spTemp=cmdTemp.Parameters.Add("@intI",SqlDbType.Int); spTemp.Direction=ParameterDirection.Output; cmdTemp.ExecuteNonQuery(); strI=spTemp.Value.ToString();//一样的返回结果 strI=cmdTemp.Parameters["@intI"].Value.ToString();//一样的返回结果 cmdTemp.Dispose(); CloseDataBase(); 算法求解,控制台 dll传递参数 toolStripContainer中拖动toolStrip,toolStripContainer大小变化 c#中comboBox控件 各位前辈 小弟需要指导 TcpClient不能连接的问题 导出WORD 学正则看什么东西比较好? .NET Remoting的问题?急 关于异常的问题 请问有没有好的类似于这个论坛、可以自由提问的英文的C#和.Net网站 怎么在程序里检测与oracle的连接已经断开。
conn.Open();
SqlCommand comm = new SqlCommand();
comm.Connection = conn;
comm.CommandType = CommandType.StoredProcedure;
comm.CommandText = 存储过程名称;SqlParameter pm;
pm = comm.Parameters.Add("@ID", SqlDbType.Int);
pm.Value = 1;comm.ExecuteNonQuery();
@au_idIN varchar (11)) //存储过程
As
/* set nocount on */
select count (T.title)
from authors as A join titleauthor as TA on
A.au_id=TA.au_id
join titles as T
on T.title_id=TA.title_id
where A.au_id=@au_idIN
Return(5)string strCount;
SqlConnection PubsConn = new SqlConnection
("Data Source=server;integrated " +
"Security=sspi;initial catalog=pubs;");
SqlCommand testCMD = new SqlCommand
("TestProcedure2", PubsConn);testCMD.CommandType = CommandType.StoredProcedure;SqlParameter RetVal = testCMD.Parameters.Add
("RetVal", SqlDbType.Int);
RetVal.Direction = ParameterDirection.ReturnValue;
SqlParameter IdIn = testCMD.Parameters.Add
("@au_idIN", SqlDbType.VarChar, 11);
IdIn.Direction = ParameterDirection.Input;IdIn.Value = "213-46-8915";PubsConn.Open();strCount = testCMD.ExecuteScalar().ToString() ;Console.WriteLine("Number of Rows:" + strCount);
Console.WriteLine("Return Value:" + RetVal.Value);不明白,在存储过程里只有一个参数,而在程序里却写了两个参数。。为什么啊?
SqlParameter RetVal = testCMD.Parameters.Add("RetVal", SqlDbType.Int);
RetVal.Direction = ParameterDirection.ReturnValue;你没见到Direction 的值是ParameterDirection.ReturnValue吗?
SqlParameter spTemp;
string strI;
OpenDataBase();
//加密数据 strPwd=FormsAuthentication.HashPasswordForStoringInConfigFile(strPwd,"md5"); cmdTemp=new SqlCommand("UserLogln",conn);
cmdTemp.CommandType=CommandType.StoredProcedure;
cmdTemp.Parameters.Add ("@UserID",strUserName);
cmdTemp.Parameters.Add ("@UserPwd",strPwd);
spTemp=cmdTemp.Parameters.Add("@intI",SqlDbType.Int);
spTemp.Direction=ParameterDirection.Output;
cmdTemp.ExecuteNonQuery();
strI=spTemp.Value.ToString();//一样的返回结果
strI=cmdTemp.Parameters["@intI"].Value.ToString();//一样的返回结果
cmdTemp.Dispose();
CloseDataBase();