读书人

存储过程多谢。有代码在此

发布时间: 2012-03-19 22:03:05 作者: rapoo

求一个存储过程,谢谢。有代码在此
我实在是没办法了,自己写了一个,但是在SQL手动执行就可以,到了网页上调试就是注册失败。
麻烦帮忙看看存储过程怎么改。。。
一楼是CS的代码,二楼是存储过程的代码


C# code
public bool ProcessRequest(string UserName, string PassWord, int Sex, int Age, string Birthday, string TrueId, string Email, out string Msg)        {            Msg = "";            string str = "";            string str2 = "";            string str3 = "";            string str4 = "";            string str5 = "";            string str6 = "";            if ((UserName != null) && (UserName.Trim() != ""))            {                str = Utility.replaceSingleQuotes(UserName.Trim());            }            if ((PassWord != null) && (PassWord.Trim() != ""))            {                str2 = Utility.replaceSingleQuotes(PassWord.Trim());            }            if ((Birthday != null) && (Birthday.Trim() != ""))            {                str3 = Utility.replaceSingleQuotes(Birthday.Trim());            }            if ((TrueId != null) && (TrueId.Trim() != ""))            {                str4 = Utility.replaceSingleQuotes(TrueId.Trim());            }            if ((Email != null) && (Email.Trim() != ""))            {                str5 = Utility.replaceSingleQuotes(Email.Trim());            }            if (((((str != "") && (str2 != "")) && ((str3 != "") && (str4 != ""))) && (str5 != "")) && (Sex <= 1))            {                if (new Utility().VipTrue())                {                    SqlParameter[] params = new SqlParameter[10];                    params[0] = new SqlParameter("@strGameAccount", SqlDbType.NVarChar, 0x20);                    params[0].set_Value(str);                    params[1] = new SqlParameter("@strGamePWD", SqlDbType.NVarChar, 0x20);                    params[1].set_Value(str2);                    params[2] = new SqlParameter("@strTjUser", SqlDbType.NVarChar, 0x20);                    params[2].set_Value(str6);                    params[3] = new SqlParameter("@strSex", SqlDbType.Int, 4);                    params[3].set_Value(Sex);                    params[4] = new SqlParameter("@strage", SqlDbType.Int, 4);                    params[4].set_Value(Age);                    params[5] = new SqlParameter("@strBirthday", SqlDbType.NVarChar, 0x20);                    params[5].set_Value(str3);                    params[6] = new SqlParameter("@strTrueId", SqlDbType.NVarChar, 0x20);                    params[6].set_Value(str4);                    params[7] = new SqlParameter("@strEmail", SqlDbType.NVarChar, 0x20);                    params[7].set_Value(str5);                    params[8] = new SqlParameter("@strErrInfo", SqlDbType.NVarChar, 0x200);                    params[8].set_Value("");                    params[8].set_Direction(ParameterDirection.Output);                    params[9] = new SqlParameter("@return", SqlDbType.Int, 4);                    params[9].set_Value(0);                    params[9].set_Direction(ParameterDirection.ReturnValue);                    if (this.dbWrapper.ExecuteStoredProcedure("AC_sp_CreateAccount", params) == 0)                    {                        if (int.Parse(params[9].get_Value().ToString()) == 1)                        {                            Msg = "恭喜成功!";                            return true;                        }                        Msg = params[9].get_Value().ToString();                        return false;                    }                    Msg = "失";                    return false;                }                Msg = Utility.pingmacstr;            }            else            {                Msg = "资料不完整!";            }            return false;        } 



[解决办法]
1.设置断点调式。
2.是否执行存储过程了。
3.复制断点时出现的sql insert 语句,在sql2005中执行
4.查看存储过程参数个数和类型是否正确。
[解决办法]
参考:

SQL code
   CREATE PROCEDURE Joinmymy(     @useremail  VARCHAR(50),     @userpwd    VARCHAR(50),     @username NVARCHAR(50),     @usersex INT,     @userquestion int,     @useranswer NVARCHAR(50),     @userid  int  output) AS IF EXISTS(SELECT * FROM MymyUsers WHERE UserName=@username)--先判断用户是否存在BEGINSELECT @userid=-1 --如果存在则返回-1ENDELSE --如果不存在则执行注册插入BEGININSERT INTO  MymyUsers(      UserEmail,      UserPWD,      UserName,      UserSex,      UserQuestion,      UserAnswer)VALUES(      @useremail,      @userpwd,      @username,      @usersex,      @userquestion,      @useranswer)SELECT     @userid =SCOPE_IDENTITY()--获取刚注册分配的用户idFROM MymyUsersENDGO
[解决办法]
楼主问题很明显了,不细心呐!
sql执行成功,程序不出来,摆明了就是程序有问题罗,调用不成功一般要有耐心,一是看参数名称一一对应了没,数据类型对没?肉眼看不出来,楼主就麻烦点,调试,把值一个个复制出来,然后在在sql里面去执行存储过程,把值给传进去,死也会出来,看得到报错的问题。细心点,耐心点,就好了,这个存储过程要是参数太多确实程序吊起来是很容易出错,很麻烦的。
[解决办法]
楼主还是调试,设置断点,获取传递的参数,然后把这些值手动赋值给存储过程,看是否能够得到数据,排除存储过程是否有问题,还要注意传递给储存过程的参数个数和类型

读书人网 >asp.net

热点推荐