我写一个注册用户的页面,公共类中定义
public int Adduser(string UserName, string Password, string Address, string Phone, string Mobile, string Email, int RoleID, string Birth, string userJygm, string msgCompany, string msgWenHua)
        { 
            ///定义类SQLHelper
            SQLHelper sqlHelper = new SQLHelper();            ///创建访问数据库的参数
            SqlParameter[] paramList = 
                {
                    sqlHelper.CreateInParam("@UserName",SqlDbType.NVarChar,50,UserName),
                    sqlHelper.CreateInParam("@Password",SqlDbType.NVarChar,50,Password),
                    …………
                };
            try
            {
                //执行存储过程
                return (sqlHelper.RunProc("Pr_AddUser", paramList));
            }
            catch (Exception ex)
            {
                ///抛出执行数据库异常
                SQLHelper.CreateErrorMsg(ex.Message);
                throw new Exception(ex.Message,ex);
            }
前面paramList中的UserNam、Password……都可以得到注册时的变量,执行时总是提示:
对象名“tb_message"无效??
这是什么原因呢? 执行过后数据可以插入数据表中的

解决方案 »

  1.   

    " 并非所有的代码路径都返回值"---在catch后面加上return null;应该就可以了
    对象名"tb_message"无效---以上代码没出现过,好好找找吧
      

  2.   

    存储过程里tb_message,你没给他传值进去。
    “并非所有的代码路径都返回值”是说,方法定义的是有返回值的,但你的方法里面有可能是没有return。也有可能是你写了return,但是在if语句里面,而这个if语句是不一定会进去的,这样编译器也会报编译错误的。
      

  3.   

    楼上到底问什么呢..Catch()里面没返回路径.在里面加上return -1吧...
      

  4.   

    Catch()里面没返回路径.在里面加上return 一个int值咯
      

  5.   

    对,刚我同事给看了一下,改成下面就行了,谢谢大伙,我散分交朋友了。非常感谢
    catch (Exception ex)
                {
                    return 0;
                }