现象:
注册用户功能,
涉及两次读写数据库 一次是将表count中的usernum字段加1 用于生成用户的流水帐号~  
一次就是将用户信息写到表user中~解决办法:try
                    {
                        if (mydr.Read())
                        {
                            Session["Fuser_num"] = mydr["Fuser_num"].ToString();
                            mydr.Close();
***************************************************
自动加1
***************************************************
                            SqlCommand mycom3 = new SqlCommand("update [xfeng_count] set Fuser_num=Fuser_num+1 where id=1", mycon);
                            mycom3.ExecuteScalar();
***************************************************
提交用户信息(存储过程)
***************************************************
                            SqlCommand com = new SqlCommand("reg", mycon);
                            com.CommandType = CommandType.StoredProcedure;
                            SqlParameter sp = new SqlParameter("@user", SqlDbType.VarChar, 50);
                            sp.Value = Request["username"];
                            com.Parameters.Add(sp);
                            .................
问题1:关于 Session["usernum"] = mydr["usernum"].ToString(); 
我是想取出usernum 然后判断 如果是1位数 前面加两个0 如果是两位数 前面加一个0
然后usernum加1问题2:如果用户注册输入有错误
注册是注册不进去的 可是自动加1却加上去了~问题3:我想把系统的异常信息 变成友好显示异常信息!

解决方案 »

  1.   

    噢,测试页面
    http://www.xxfeng.com/Fuserreg.aspx
      

  2.   

    第一个问题,string应该有个length的属性,你可以判断这属性来判断是否要加0
    不过有个问题,如果是9   那加0就是09 再加1是多少?
    所以我觉得要先加1,再判断是几位吧?
    2问题,既然那样,就写一个验证,来保证用户输入的必须是正确的,或者你就直接用一个js控件来让用户输入,这样格式就不会错了
    3.事务,抱歉没有找到合适的代码,总之你就看一下事务就可以了  sqlcommand有个tranxxxx的属性,用那个定义事物,你下一个微软那sqlHelper看看,我昨天才看,现在看的还不是很好.
    4.你用catch捕捉错误不行么?然后可以写进你的错误日志.我理解的不太好希望对你有帮助
      

  3.   

    yan53125(会OK的) 
    1,我在asp下的代码是:
    if len(infocnum)=1 then
    infocnum="00000"&infocnum
    end if
    想翻译成asp.net 我知道有个length属性,
    可是使用的时候 出现问题 盼指教!
    2,加判断我是知道的, 只不过是想知道 既然用了try 可是还是出现一个写入 一个没写入, 那自然是try写错了, 想知道怎么写!谢谢你! 
    关于catch的问题 我继续查看资料~ 也希望知道的 指点一下~ 帮我节约点时间!
      

  4.   

    你在存储过程中处理啊
    利用事物
    Begin Transaction
    if @error
    begin
     RollBack
    end
    Commit Transaction
      

  5.   

    看我的代码就知道 有一个存储过程了~ CREATE PROCEDURE Fuser_reg
    (
        @user_user varchar(50)output,
        @user_birth datetime,
        @user_infonumber varchar(50) output
    )
     AS
    Set XAcT_ABORT ON
    BEGIN TRAN
    insert into user(
    user_user,
    user_birth,
    user_infonumber
    )
    VALUES
    (
    @user_user,
    @user_birth,
    @user_infonumber
    )
    COMMIT   TRAN
    GO这是注册的存储过程
    加1的那个字段在另外一张表里~