2011-07-18 36 views
0

我正在使用createuserwizard将附加用户信息存储到mysql数据库中,除了由asp.net成员资格提供程序提供的信息。我想将此信息存储到另一个名为“userprofile”的表中。 'userprofile'中的用户ID是int类型的,并且是引用'my_aspnet_users'的'id'的外键。如何从createuserwizard获取mysql数据库的用户ID?

这是我的问题: 我似乎无法获得新创建的用户的用户ID存储在我的'userprofile'表中。这些行不工作:

 MembershipUser newUser = Membership.GetUser(RegisterUser.UserName); 
     Int32 newUserId = (Int32)newUser.ProviderUserKey;    

这些线路引起的用户名设置为通过ProviderUserKey返回的GUID值,它是如此奇怪!另一方面,my_aspnet_users的id列在创建用户时会增加1。没有任何东西被添加到'userprofile'表中。

这是我插入上面的代码:

 protected void RegisterUser_CreatedUser(object sender, EventArgs e) 
    { 
     FormsAuthentication.SetAuthCookie(RegisterUser.UserName, false /* createPersistentCookie */); 

     string continueUrl = RegisterUser.ContinueDestinationPageUrl; 
     if (String.IsNullOrEmpty(continueUrl)) 
     { 
      continueUrl = "~/"; 
     } 

     // Retrieve all the values from the registration form to insert into database 
     TextBox FirstNameTextBox = (TextBox)RegisterUserWizardStep.ContentTemplateContainer.FindControl("FirstName"); 
     TextBox LastNameTextBox = (TextBox)RegisterUserWizardStep.ContentTemplateContainer.FindControl("LastName"); 
     TextBox UsernameTextBox = (TextBox)RegisterUserWizardStep.ContentTemplateContainer.FindControl("UserName"); 
     TextBox EmailTextBox = (TextBox)RegisterUserWizardStep.ContentTemplateContainer.FindControl("Email"); 

     // Get the UserId of the just-added user 
     MembershipUser newUser = Membership.GetUser(RegisterUser.UserName); 
     Int32 newUserId = (Int32)newUser.ProviderUserKey;    

     MySqlConnection DBConn = new MySqlConnection(WebConfigurationManager.ConnectionStrings["LocalMySqlServer"].ConnectionString); 
     MySqlCommand DBCmd = new MySqlCommand(); 

     try 
     { 
      // Add Insert statement to insert into database 
      DBCmd = new MySqlCommand(
       "INSERT INTO userprofile(UID, Email, Fname, Lname)" + 
       "VALUES (@UID, @Email, @Fname, @Lname)", DBConn); 

      // Add database parameters 
      DBCmd.Parameters.Add("@UID", MySqlDbType.Int32).Value = newUserId; 
      DBCmd.Parameters.Add("@Email", MySqlDbType.VarChar).Value = EmailTextBox.Text; 
      DBCmd.Parameters.Add("@Fname", MySqlDbType.VarChar).Value = FirstNameTextBox.Text; 
      DBCmd.Parameters.Add("@Lname", MySqlDbType.VarChar).Value = LastNameTextBox.Text; 
      DBCmd.ExecuteNonQuery(); 
     } 

     catch(Exception exp){ 
      Response.Write(exp); 
     } 

     // Close database connection and dispose database objects 
     DBCmd.Dispose(); 
     DBConn.Close(); 
     DBConn = null; 

     Response.Redirect(continueUrl); 

    } 

有没有人使用MySQL和其他信息的工作的CreateUserWizard?

任何帮助,将不胜感激。谢谢!

回答

0

原来上面的代码没有错。我在另一个函数中搞乱了用户标识的值,这在这里造成了麻烦!

1

您的SQL语句没有返回您新创建的ID值。执行插入语句时不会自动返回。

+0

感谢您的回复。那么我如何获得ID值? – coder

相关问题