现象:
注册用户功能,
涉及两次读写数据库 一次是将表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:我想把系统的异常信息 变成友好显示异常信息!
注册用户功能,
涉及两次读写数据库 一次是将表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:我想把系统的异常信息 变成友好显示异常信息!
http://www.xxfeng.com/Fuserreg.aspx
不过有个问题,如果是9 那加0就是09 再加1是多少?
所以我觉得要先加1,再判断是几位吧?
2问题,既然那样,就写一个验证,来保证用户输入的必须是正确的,或者你就直接用一个js控件来让用户输入,这样格式就不会错了
3.事务,抱歉没有找到合适的代码,总之你就看一下事务就可以了 sqlcommand有个tranxxxx的属性,用那个定义事物,你下一个微软那sqlHelper看看,我昨天才看,现在看的还不是很好.
4.你用catch捕捉错误不行么?然后可以写进你的错误日志.我理解的不太好希望对你有帮助
1,我在asp下的代码是:
if len(infocnum)=1 then
infocnum="00000"&infocnum
end if
想翻译成asp.net 我知道有个length属性,
可是使用的时候 出现问题 盼指教!
2,加判断我是知道的, 只不过是想知道 既然用了try 可是还是出现一个写入 一个没写入, 那自然是try写错了, 想知道怎么写!谢谢你!
关于catch的问题 我继续查看资料~ 也希望知道的 指点一下~ 帮我节约点时间!
利用事物
Begin Transaction
if @error
begin
RollBack
end
Commit Transaction
(
@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的那个字段在另外一张表里~