2011-07-18 32 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

相關問題