在C#中在.CS页面执行返回值为字符串的存储过程,代码怎么写的:
存储过程如下: 
CREATE PROC Login 
            @userName varchar(20), 
            @password varchar(20) 
         AS  
            IF NOT EXISTS(SELECT * FROM SysUser WHERE UserName = @userName) 
                RETURN -1 
            IF NOT EXISTS(SELECT * FROM SysUser WHERE UserName = @userName AND PWD = @password) 
                RETURN 1 
      
            RETURN 0 
GO 
平时我执行的存储过程一般都是返回一个表,也就说我们得到的的是一个DataSet.
如果存储过程返回的不是一个表,是一个字符串,
就问代码又怎么写啦

解决方案 »

  1.   

    方法1.可以用ExecuteScalar(); 返回第一行第一列第一个值 SqlCommand cmd = new SqlCommand();
                cmd.CommandText = "sp";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Connection=...
                int resultInt = (int)cmd.ExecuteScalar();//返回一个数字
                //返回字符串string resultString = cmd.ExecuteScalar().ToString();
    方法2:LZ经常返回dataset,那也没关系,ds.Table[0].Rows[0][0] 这样也可以取到返回的第一个表的第一行第一列的第一个值
      

  2.   

    你如果要以表的形式返回,可以这样改存储过程
    CREATE PROC Login  
                @userName varchar(20),  
                @password varchar(20)  
             AS   
                IF NOT EXISTS(SELECT * FROM SysUser WHERE UserName = @userName)  
                    select -1  
                IF NOT EXISTS(SELECT * FROM SysUser WHERE UserName = @userName AND PWD = @password)  
                    select 1  
    GO  
    返回结果同样是表,只不过是一行一列的表而已。。
      

  3.   

    Parameters.Add(new SqlParameter("ReturnValue",SqlDbType.Int,4))   
      ParameterDirection.ReturnValue