目的是: 将username和content两个字段写入数据库的表LeaveWords中
在提交的事件中:
……
 if (Db.AddMsg(RegInfo.username, RegInfo.content) > -1)//表示写入数据成功
            {
                Response.Write("<script language='javascript'>alert('恭喜,发贴成功');location.href='index.aspx';</script>");
            }
            else
            {
                Response.Write("<script language='javascript'>alert('很遗憾,发贴失败!');location.href='ly.aspx';</script>");
            }……
但现在页面提示:编译器错误消息: CS0161: “Db.AddMsg(string, string)”: 并非所有的代码路径都返回值请问是哪点有问题哪??在线等
.aspx.cs中函数如下:
public int AddMsg(string username, string content)
    {
        Db db = new Db();
        SqlParameter[] paramlist=
        {
            db.CreateInParam("@username",SqlDbType.NVarChar,200,username),
            db.CreateInParam("@contents",SqlDbType.NVarChar,500,content)
        };
        try
        {
            db.RunProc("AddMsg", paramlist);
        }
        catch (Exception ex)
        {
            return 0;
        }
    }存储过程AddMsg如下:
ALTER PROCEDURE [dbo].[AddMsg] 
@username nvarchar(200),
@contents nvarchar(500)
AS
BEGIN
    Declare @account as int
set @account =
(select count(*) from leavewords where username=@username)

if (@account <1)
insert leavewords (username,contents) 
values
(@username,@contents)
    return @@Identity
END

解决方案 »

  1.   

    public int AddMsg(string username, string content) 
        { 
            Db db = new Db(); 
            SqlParameter[] paramlist= 
            { 
                db.CreateInParam("@username",SqlDbType.NVarChar,200,username), 
                db.CreateInParam("@contents",SqlDbType.NVarChar,500,content) 
            }; 
            try 
            { 
                db.RunProc("AddMsg", paramlist); 
            } 
            catch (Exception ex) 
            { 
                return 0; 
            } 
        } 
    try 中没有返回值,你的方法要求返回一个int 而try中没有,catch不是肯定能执行的所以报错
      

  2.   

    public int AddMsg(string username, string content) 
        { 
            Db db = new Db(); 
            SqlParameter[] paramlist= 
            { 
                db.CreateInParam("@username",SqlDbType.NVarChar,200,username), 
                db.CreateInParam("@contents",SqlDbType.NVarChar,500,content) 
            }; 
            try 
            { 
                db.RunProc("AddMsg", paramlist); 
            } 
            catch (Exception ex) 
            { 
                return 0; 
            } 
        } 
      这段代码就有问题  try中没有return啊   只有在出错了  走到catch中了  才返回0 当然会报错
      

  3.   

      try 
            { 
                db.RunProc("AddMsg", paramlist); 
    return 1;
            } 
            catch (Exception ex) 
            { 
                return 0; 
            } 
      

  4.   


    这个是正解,try里面没有返回
      

  5.   

    try 下面要有返回值~~~
    try成功了要返回~~~如果catch exception了 也要有返回值
      

  6.   

    好的,谢谢。一定要把Net学好,主流是Net了。 asp搞好了也淘汰了……
    努力学习……
    给分了