我的Users表中有两个varchar(50)的字段UserName,Password我的存储过程如下:
Create Procedure getpass
@UserName varchar(50),
@pass varchar(50) outputAS
select @pass=Password from Users where UserName=@UserName
return @pass
go在Asp.NET中我这样写的:
SqlCommand cmd = new SqlCommand("getpass",conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@UserName", SqlDbType.VarChar, 50).Value = UserName;
SqlParameter para = new SqlParameter();
para = cmd.Parameters.Add("@pass", SqlDbType.VarChar,50);
para.Direction = ParameterDirection.Output;
cmd.ExecuteScalar();
string pwd = Convert.ToString(cmd.Parameters["@pass"].Value);
测试UserName='admin'它数据库中的密码是'abc'
运行返回了这样的错误信息:
在将 varchar 值 'abc' 转换成数据类型 int 时失败。请大家帮看一下,谢谢了!

解决方案 »

  1.   

    创建一个删除记录的存储过程 同时返回被删除记录的某列的值 CREATE PROCEDURE? delArticle @articleid? int,@neirong varchar(150) output? AS set @neirong = (select neirong from db_Article where articleid=@articleid 
    delete from db_Article where articleid=@articleid 
    GO C# 调用 SqlCommand1=new SqlCommand("delArticle",SqlConnection1); 
    ?SqlCommand1.CommandType=CommandType.StoredProcedure; 
    ?SqlCommand1.Parameters.Add(new SqlParameter("@articleid",SqlDbType.int)); 
    ?SqlCommand1.Parameters["@articleid"].Value = MyDataGrid.DataKeys[e.Item.ItemIndex];? 
    SqlCommand1.Parameters.Add( new SqlParameter("@neirong",SqlDbType.VarChar,150)); 
    SqlCommand1.Parameters["@neirong"].Value = ""; 
    SqlCommand1.Parameters["@neirong"].Direction= ParameterDirection.Output; SqlConnection1.Open(); 
    int r=SqlCommand1.ExecuteNonQuery(); ?//返回值 string neirong= SqlCommand1.Parameters["@neirong"].Value.ToString().Trim(); 
      

  2.   

    在存储过程中把return那一行注掉再试。
      

  3.   

    string str = System.Configuration.ConfigurationManager.AppSettings["joinDB"];
    SqlConnection con = new SqlConnection(str);
    SqlCommand cmd = new SqlCommand("存储过程名称", con);
     cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add(new SqlParameter("存储过程参数", SqlDbType.NVarChar, 20));
     cmd.Parameters["存储过程参数"].Value = 参数值;
     con.Open(); 方法1:
    cmd.ExecuteNonQuery();
     SqlDataAdapter da = new SqlDataAdapter();
    da.SelectCommand = cmd;
    DataSet ds = new DataSet();
    da.Fill(ds);//绑定到数据控件dlType.DataSource = ds;
    dlType.DataBind(); 方法2:SqlDataReader reader = cmd.ExecuteReader();dlType.DataSource = reader;
    dlType.DataBind();
    con.Close();
    看下我的