读书人

C#中怎么调用存储过程

发布时间: 2012-01-19 00:22:27 作者: rapoo

C#中如何调用存储过程
小弟用如下C#代码调用之后的存储过程,为什么总提示
异常详细信息: System.Data.SqlClient.SqlException: 'read_user' 附近有语法错误。

---------------------------

SqlConnection myConn = new SqlConnection(sqlString);
SqlCommand myCmd = new SqlCommand("read_user", myConn);
myCmd.Parameters.Add("@vvfe", SqlDbType.NVarChar).Value = "user_name";
myConn.Open();

SqlDataReader myReader = myCmd.ExecuteReader();

----SQL---------------------

ALTER PROCEDURE [dbo].[read_user] (
@vvfe nvarchar(50)
)
as
BEGIN
Declare @Sql nVarchar(1000)
Set @Sql='select ' + @vvfe + ' from userinfo'
END

---------------------------

由于工作需要我现在急需很快的了解存储过程,不然可能就要失业了,各位大哥帮帮忙,小弟给诸位作揖了。

C#怎么传参数给存储过程?存储过程怎么接收?
存储过程怎么传参数给C#?C#怎么接收?


[解决办法]
SqlCommand cmd = new SqlCommand("exec read_user @vvfe = user_name",conn);
cmd.ExecuteReader();

参考:http://blog.54master.com/index.php/586951/viewspace-19909
[解决办法]
[code=C#]
/// <summary>
/// 在数据库中写入创建的房间
/// 调用CreatRoom存储过程
/*CREATE PROCEDURE CreatRoom
@Name varchar(50),
@Owner varchar(50)
AS
Insert into OnLineRooms
(R_Name,R_Owner)
values
(@Name,@Owner)
select @@rowcount

GO
*/
/// </summary>
/// <param name= "RName "> 房间名 </param>
/// <param name= "ROwner "> 房主名 </param>
/// <returns> 成功 ture </returns>
public bool CreatRoom(string RName, string ROwner)
{
OpenDB();

using (SqlCommand com = new SqlCommand( "CreatRoom ", _conn))
{

com.CommandType = System.Data.CommandType.StoredProcedure;//你的程序中没有指定是存储过程

SqlParameter paramRName = new SqlParameter( "@Name ", SqlDbType.VarChar, 50);
paramRName.Value = RName;
com.Parameters.Add(paramRName);

SqlParameter paramROwner = new SqlParameter( "@Owner ", SqlDbType.VarChar, 50);
paramROwner.Value = ROwner;
com.Parameters.Add(paramROwner);

if (com.ExecuteNonQuery() == 1)
return true;
else
return false;
}

}
[/code]
[解决办法]

C# code
 /* CREATE PROCEDURE GetHost         @RName varchar(80),     //返回的参数         @Host varchar(80) output          AS         select  @Host = R_Owner from OnLineRooms where R_Name = @RName         GO        */        /// <summary>        /// 返回房主名        /// </summary>        /// <param name="rname">房间名</param>        /// <returns>房主名:string</returns>        public string GetHost(string rname)        {            OpenDB();            using (SqlCommand com = new SqlCommand("GetHost", _conn))            {                com.CommandType = CommandType.StoredProcedure;                SqlParameter paramName = new SqlParameter("@RName", SqlDbType.VarChar, 80);                paramName.Value = rname;                com.Parameters.Add(paramName);                //下面这个就是返回参数                  SqlParameter paramHost = new SqlParameter("@Host", SqlDbType.VarChar, 80);                paramHost.Direction = ParameterDirection.Output;                com.Parameters.Add(paramHost);                com.ExecuteNonQuery();         //下面是读取返回值                return paramHost.Value.ToString(); ;            }        } 

读书人网 >C#

热点推荐