小弟用如下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#怎么接收?
异常详细信息: 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#怎么接收?
cmd.ExecuteReader(); 参考:http://blog.54master.com/index.php/586951/viewspace-19909
/// <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;
} }
@vvfe nvarchar(50)
)
as
BEGIN
Declare @Sql nVarchar(1000)
Set @Sql='select ' + @vvfe + ' from userinfo'
Exec(@Sql)
END谢谢各位现在问题是解决了,可是该怎么接收存储过程返回的参数呢?
while(sdr.read())
{
MessageBox.show(sdr["字段名"].toString());
}
@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(); ; }
}