asp.net高级教程(四)---实战篇(上)[2]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

omepage ,

string a_strSignature)
{
//监测参数有效性
if (a_strUserName.IndexOf("'") != -1 || a_strPassword.IndexOf("'")

!= -1
|| a_strEmail.IndexOf("'") != -1 ||

a_strHomepage.IndexOf("'") != -1
|| a_strSignature.IndexOf("'") != -1)
{
throw(new Exception("包含非法字符")) ;
}

try
{
MyOwnClass.MyConnection myConn = new MyConnection() ;
SQLCommand myCmd = new SQLCommand() ;

//判断是新建用户还是修改用户资料
if (a_enumCreateType == BBSUser.CreateType.Create)
{
myCmd.CommandText = "insert into BBSUser(UserName ,

Password , Email , Homepage , Signature)"
+ "values('" + a_strUserName + "','"

+ a_strPassword + "','"
+ a_strEmail + "','" + a_strHomepage

+ "','" + a_strSignature + "')" ;
}
else
{
myCmd.CommandText = "update BBSUser set Email='" +



a_strEmail
+ "' , Homepage='" + a_strHomepage + "' ,

Signature='"
+ a_strSignature + "' where username='" +

a_strUserName + "'";
}
myConn.Open() ;
myCmd.ActiveConnection = myConn ;
myCmd.ExecuteNonQuery() ;
myConn.Close() ;

}
catch(SQLException exp)
{
throw(new Exception("数据库出错:" + exp.Message)) ;
}

}

//取回密码
public void GetPassword(string a_strUserName , string a_strEmail)
{

if (GetUser(a_strUserName) && m_strEmail == a_strEmail)
{
//发送Email
System.Web.Util.MailMessage myMail = new MailMessage() ;
myMail.From = "lyp@server1.domain" ;
myMail.Subject = "取回您的密码" ;
myMail.Body = "请牢记您的密码:" + m_strPassword ;
myMail.To = a_strEmail ;
SmtpMail.Send(myMail) ;
}
else
{
throw (new Exception("该用户不存在")) ;
}
}

}
}

通过前面的学习,你可能已经能够看懂这个类定义的大部分内容,那些是成员变量,那
些是属性,那

些是方法都可以理解了,在这里需要解释的只有以下两部分内容,首先看这段代码:

public enum CreateType
{
Create = 0 ,
Modify
}
这段代码的作用是创建BBSUser类的一个枚举变量,写过c程序的朋友很容易理解,建立
这个枚举变量

的作用是简化记忆,用容易记忆的名称代替值,比如上边这个定义,当在方法CreateUse
r里作为第一个参

数时,BBSUser.CreateType.Create实际的值是0,代表这个方法的目的是创建用户,而
如果是

BBSUser.CreateType.Modify,则代表目的是修改用户资料。显而易见,用if
(a_enumCreateType ==

BBSUser.CreateType.Create)这样的语句比用if (a_intCreateTYpe == 1)更容易记忆,
最大限度减少出

错的可能。

另外一个要解释的内容是:你可能已经注意到在类的定义中有两个 GetUser方法的定义
,其作用域和

返回值都相同,只是参数类型不同。没错,这种做法叫重载(override),是并且只能是
面向对象程序语言

实现多态性的基本方法,那么这样做有什么好处呢?就是根据参数不同由类自己决定应
该调用那个正确的

方法,这样讲可能有些抽象,那么举个例子来说吧,这个GetUser方法的作用是取得用户
资料,那么它可

以通过用户名来取得资料,也可以通过用户ID来取得,如果不用函数的重载,那么我们
需要建两个函数,

可能一个叫GetUserFromName(string a_strName) , 而另一个是GetUserFormID(int
a_intID),在调用时

需要判断一下决定调用那个方法,象这样:
if ( BBSUser.ID != "")
{
GetUserFromID(BBSUser.ID) ;
}
else if(BBSUser.Name != "")
{
GetUserFromName(BBSUser.Name) ;
}



以上两种方法孰优孰劣恐怕已经不用我说了吧。
好了,既然我们已经创建好BBSUser对象,下面就可以利用它来进行对用户的操作了。

本文关键:asp.net高级教程(四)---实战篇(上)
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top