请大家看一段代码?

Eagle_ice 2008-09-30 11:53:17
这是实现修改用户Email的代码

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

public partial class EditUser : System.Web.UI.Page
{
private int nUserID = -1;
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Params["UserID"] != null)
{
if (int.TryParse(Request.Params["UserID"].ToString(), out nUserID) == false)
{
return;
}
}
if (!Page.IsPostBack)
{
if (nUserID > -1)
{
User user = new User();
SqlDataReader dr = user.GetSingleUser(nUserID);
if (dr.Read())
{
UserName.Text = dr["UserName"].ToString();
Email.Text = dr["Email"].ToString();
}
dr.Close();
}
}
}
protected void ModifyBtn_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
User user=new User();
try
{
user.UpdateUser(nUserID,Email.Text.Trim());
Response.Write("<script>alert('更新数据成功,请妥善保管好您的信息!')</script>");
}
catch (Exception ex)
{
Response.Redirect("~/Error.aspx?ErrorMsg="+ex.Message+"&ErrorUrl="+Request.Url.ToString());
}
}
}
protected void ReturnBtn_Click(object sender, EventArgs e)
{
Response.Redirect("~/UserManage.aspx");
}
}


实现修改用户Email的方法

public int UpdateUser(int nUserID, string sEmail)
{
SqlConnection con = DB.createDB();
string cmdText = UPDATEUSER + "'" + sEmail + "'" + "where UserID=" + "'" + nUserID.ToString() + "'";
SqlCommand cmd = new SqlCommand(cmdText, con);
int nResult = -1;
try
{
con.Open();
nResult = cmd.ExecuteNonQuery();
}
catch (SqlException ex)
{
throw new Exception(ex.Message, ex);
}
finally
{
con.Close();
}
return nResult;
}

用户表

create table Users
(
UserID int identity primary key,
UserName varchar(50),
Password varchar(100),
Email varchar(200),
IsAdmin bit
)

在顶部定义了一个整型的nUserID并赋值为-1,在if (!Page.IsPostBack){}中进行比较(把从数据库中读出的值绑定到指定的TextBox上),页面首次加载它是大于-1的,不然怎么能执行读取数据呢?其中UserID是表的主键。
我要问的是:开始nUserID不是-1吗?怎么加载后会大于-1呢?期间是如何变化的?nUserID可能是0吗?若是0的话,主键是从1开始的啊,不解中...
...全文
89 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lb_ljh 2008-11-27
  • 打赏
  • 举报
回复
我觉得这段代码有点问题:
问题1: if (Request.Params["UserID"] != null)
{
if (int.TryParse(Request.Params["UserID"].ToString(), out nUserID) == false)
{
return;
}
}
这个判断是多余的,只要写一句"int.TryParse(Request.Params["UserID"].ToString(), out nUserID);"就行了。
问题2: if (nUserID > -1)这行代码是错误的。因为转换不成功是,nUser的值为0,这时是不能进行下面的绑定操作的。应将其改为"if(nUserID>0)"。但在执行这段代码是并不感到错误的存在,是因为"if(nUserID>0)"中包含了"if (nUserID > -1)"。
cyz9977 2008-10-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cyz9977 的回复:]
int.TryParse()和int.Parse()功能类似
都是强制转换整形
int.TryParse()带两个参数,第一个是要转换的参数,第二个为out ,即输出值,
固定为1
[/Quote]
错了,转换失败时为0
所以怎么样都不会是-1了
cyz9977 2008-10-01
  • 打赏
  • 举报
回复
int.TryParse()和int.Parse()功能类似
都是强制转换整形
int.TryParse()带两个参数,第一个是要转换的参数,第二个为out ,即输出值,固定为1
cyz9977 2008-10-01
  • 打赏
  • 举报
回复
lz去看一下int.TryParse()的用法
5Br 2008-10-01
  • 打赏
  • 举报
回复
这个问题
我不会
Eagle_ice 2008-10-01
  • 打赏
  • 举报
回复
再追问一下这个判断是什么作用,还有里面的那个if,out是干什么的?

if (Request.Params["UserID"] != null)
{
if (int.TryParse(Request.Params["UserID"].ToString(), out nUserID) == false)
{
return;
}
}

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧