首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

存储过程解决方案

2013-01-08 
存储过程存储过程:ALTER proc User_Login_1@UserID nchar(10),@Password char(20),@Return int0 outputas

存储过程
存储过程:
ALTER proc User_Login_1
@UserID nchar(10),
@Password char(20),
@Return int=0 output
as
declare @flag int
select @flag=count(*) from [table] 
where @UserID=name and @Password=password
if @flag>0
begin
   select @Return=1   
end 

连接数据库:
SqlConnection con = dbobj.GetConnection();             
                    SqlCommand com = new SqlCommand();
                    com.Connection = con;
                    con.Open();
                    com.CommandType = CommandType.StoredProcedure;
                    com.CommandText = "User_Login_1";
                    com.Parameters.Add("@UserID", SqlDbType.NChar, 10).Value = user_text.Text.Trim();
                    com.Parameters.Add("@Password", SqlDbType.Char, 20).Value = password.Text.Trim();
                    com.Parameters.Add("@Return", SqlDbType.Int).Direction =ParameterDirection.Output;                                                                        
                    com.ExecuteNonQuery();
                    int i =Convert.ToInt32(com.Parameters["@Return"].Value); 
                    if (i>0)
                    {
                        Response.Write("<script language=javascript>alert('登陆成功');</script>");
                    }
                    else
                    {
                        Response.Write("<script language=javascript>alert('登陆不成功');</script>");
                    }


                    con.Close();
这里int i =Convert.ToInt32(com.Parameters["@Return"].Value); 为什么会出现对象不能从 DBNull 转换为其他类型的错误?

[解决办法]
空字符串是不能进行类型转换的!!
先给@Return赋默认值,保证@flag=0时也有返回值!!

热点排行