Asp.Net教程,WinForm教程,Asp.Net MVC,vs2008教程,vs2010教程,Silverlight技术,源码下载,Asp.Net视频教程
全站热门标签
vs2010 Silverlight 存储过程 水晶报表 LINQ ADO.NET JavaScript DataGridView GridView AjaxPro DevExpress 面向对象 Extjs XML HTML教程 Oracle jQuery WPF MVC 分页 Office2010 GDI+ Visual C++2010 Dojo MySQL VB.NET WCF4.0 ASPxGridView WinForm textbox Sql2005 cookie Discuz!NT checkbox WCF SQL经典语句 T-SQL F# asp.net VS2008 SQL Ajax DropDownList VS2008新特性 TreeView Access Flex 页面执行时间 字符串 DataSet VB2005 回调 动画 C#时间 游戏 ASP.NET MVC
尚未分类 LINQ教程 Enterprise技术 性能优化/调试 水晶报表与打印 安全与加密 图形图像 文件处理 基础教程 Web Services 内置对象 控件示例 正则表达式\采集 ADO.NET 缓存\泛型\线程 XML技术 Url重写\静态页 vs2008综合教程
当前位置: 主页 > ASP.NET教程 > 尚未分类 >

petshop4.0 详解之七(PetShop表示层设计)(2)

时间:2010-07-15 23:02来源:未知 作者:admin 点击:

public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
{
      MembershipUser user1;
      //前面的代码略;
      try
      {
            SqlConnectionHolder holder1 = null;
            try
            {
                  holder1 = SqlConnectionHelper.GetConnection(this._sqlConnectionString, true);
                  this.CheckSchemaVersion(holder1.Connection);
                  DateTime time1 = this.RoundToSeconds(DateTime.UtcNow);
                  SqlCommand command1 = new SqlCommand("dbo.aspnet_Membership_CreateUser", holder1.Connection);
                  command1.CommandTimeout = this.CommandTimeout;
                  command1.CommandType = CommandType.StoredProcedure;
                  command1.Parameters.Add(this.CreateInputParam("@ApplicationName", SqlDbType.NVarChar, this.ApplicationName));
                  command1.Parameters.Add(this.CreateInputParam("@UserName", SqlDbType.NVarChar, username));
                  command1.Parameters.Add(this.CreateInputParam("@Password", SqlDbType.NVarChar, text2));
                  command1.Parameters.Add(this.CreateInputParam("@PasswordSalt", SqlDbType.NVarChar, text1));
                  command1.Parameters.Add(this.CreateInputParam("@Email", SqlDbType.NVarChar, email));
                  command1.Parameters.Add(this.CreateInputParam("@PasswordQuestion", SqlDbType.NVarChar, passwordQuestion));
                  command1.Parameters.Add(this.CreateInputParam("@PasswordAnswer", SqlDbType.NVarChar, text3));
                  command1.Parameters.Add(this.CreateInputParam("@IsApproved", SqlDbType.Bit, isApproved));
                  command1.Parameters.Add(this.CreateInputParam("@UniqueEmail", SqlDbType.Int, this.RequiresUniqueEmail ? 1 : 0));
                  command1.Parameters.Add(this.CreateInputParam("@PasswordFormat", SqlDbType.Int, (int) this.PasswordFormat));
                  command1.Parameters.Add(this.CreateInputParam("@CurrentTimeUtc", SqlDbType.DateTime, time1));
                  SqlParameter parameter1 = this.CreateInputParam("@UserId", SqlDbType.UniqueIdentifier, providerUserKey);
                  parameter1.Direction = ParameterDirection.InputOutput;
                  command1.Parameters.Add(parameter1);
                  parameter1 = new SqlParameter("@ReturnValue", SqlDbType.Int);
                  parameter1.Direction = ParameterDirection.ReturnValue;
                  command1.Parameters.Add(parameter1);
                  command1.ExecuteNonQuery();
                  int num3 = (parameter1.Value != null) ? ((int) parameter1.Value) : -1;
                  if ((num3 < 0) || (num3 > 11))
                  {
                        num3 = 11;
                  }
                  status = (MembershipCreateStatus) num3;
                  if (num3 != 0)
                  {
                        return null;
                  }
                  providerUserKey = new Guid(command1.Parameters["@UserId"].Value.ToString());
                  time1 = time1.ToLocalTime();
                  user1 = new MembershipUser(this.Name, username, providerUserKey, email, passwordQuestion, null, isApproved, false, time1, time1, time1, time1, new DateTime(0x6da, 1, 1));
            }
            finally
            {
                  if (holder1 != null)
                  {
                        holder1.Close();
                        holder1 = null;
                  }
            }
      }
      catch
      {
            throw;
      }
      return user1;
}
代码中,aspnet_Membership_CreateUser为aspnet_regsql工具为membership创建的存储过程,它的功能就是创建一个用户。

OracleMembershipProvider类中对CreateUser()方法的定义如下:

public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object userId, out MembershipCreateStatus status) {
    //前面的代码略;
 //Create connection
 OracleConnection connection = new OracleConnection(OracleHelper.ConnectionStringMembership);
 connection.Open();
 OracleTransaction transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted);
 try {
  DateTime dt = DateTime.Now;
  bool isUserNew = true;

  // Step 1: Check if the user exists in the Users table: create if not   
  int uid = GetUserID(transaction, applicationId, username, true, false, dt, out isUserNew);
  if(uid == 0) { // User not created successfully!
   status = MembershipCreateStatus.ProviderError;
   return null;
  }
  // Step 2: Check if the user exists in the Membership table: Error if yes.
  if(IsUserInMembership(transaction, uid)) {
   status = MembershipCreateStatus.DuplicateUserName;
   return null;
  }
  // Step 3: Check if Email is duplicate
  if(IsEmailInMembership(transaction, email, applicationId)) {
   status = MembershipCreateStatus.DuplicateEmail;
   return null;
  }
  // Step 4: Create user in Membership table    
  int pFormat = (int)passwordFormat;
  if(!InsertUser(transaction, uid, email, pass, pFormat, salt, "", "", isApproved, dt)) {
   status = MembershipCreateStatus.ProviderError;
   return null;
  }
  // Step 5: Update activity date if user is not new
  if(!isUserNew) {
   if(!UpdateLastActivityDate(transaction, uid, dt)) {
    status = MembershipCreateStatus.ProviderError;
    return null;
   }
  }
  status = MembershipCreateStatus.Success;
  return new MembershipUser(this.Name, username, uid, email, passwordQuestion, null, isApproved, false, dt, dt, dt, dt, DateTime.MinValue);
 }
 catch(Exception) {
  if(status == MembershipCreateStatus.Success)
   status = MembershipCreateStatus.ProviderError;
  throw;
 }
 finally {
  if(status == MembershipCreateStatus.Success)
   transaction.Commit();
  else
   transaction.Rollback();
  connection.Close();
  connection.Dispose();
 }
}

Tags:petshop4.0
责任编辑:admin
返回顶部
------分隔线----------------------------
推荐内容
骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价 骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价