求一个存储过程,谢谢。有代码在此
我实在是没办法了,自己写了一个,但是在SQL手动执行就可以,到了网页上调试就是注册失败。
麻烦帮忙看看存储过程怎么改。。。
一楼是CS的代码,二楼是存储过程的代码
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; }
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里面去执行存储过程,把值给传进去,死也会出来,看得到报错的问题。细心点,耐心点,就好了,这个存储过程要是参数太多确实程序吊起来是很容易出错,很麻烦的。
[解决办法]
楼主还是调试,设置断点,获取传递的参数,然后把这些值手动赋值给存储过程,看是否能够得到数据,排除存储过程是否有问题,还要注意传递给储存过程的参数个数和类型