2011-07-18 2 views
0

asp.net 회원 정보 제공자가 제공 한 정보는 제외하고 createuserwizard를 사용하여 추가 사용자 정보를 mysql 데이터베이스에 저장하고 있습니다. 이 정보를 'userprofile'이라는 다른 테이블에 저장하고 싶습니다. 'userprofile'의 사용자 ID는 int 유형이며 'my_aspnet_users'의 'id'를 참조하는 외래 키입니다.mysql 데이터베이스의 createuserwizard에서 사용자 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

위의 코드에는 아무런 문제가 없습니다. 나는 여기에 문제를 일으키는 다른 함수에서 사용자 id 값으로 주위를 어지럽 혀지고 있었다!

1

SQL 문이 새로 생성 된 ID 값을 반환하지 않습니다. 삽입 문을 실행하면 자동으로 반환되지 않습니다.

+0

답변 해 주셔서 감사합니다. 그렇다면 ID 값은 어떻게 얻습니까? – coder