开发者

How to get the user ID from createuserwizard for mysql database? [closed]

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.

This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.

Closed 2 years ago.

Improve this question

I am using the createuserwizard to store additional user info into a mysql database, apart from the info provided by the asp.net membership provider. I would like to store this info into another table called 'userprofile'. The user id in 'userprofile' is of type int and is a foreign key referencing 'id' of 'my_aspnet_users.

This is my problem: I can't seem to get the user id of the newly created user to store in my 'userprofile' table. These lines don't work:

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

These lines are causing the username to be set to the guid value returned by ProviderUserKey, which is so odd! The id column from my_aspnet_users, on the other hand, gets incremented by 1 when the user is created. And nothing gets added to the 'userprofile' table.

This is wher开发者_如何学Pythone I inserted the above code:

       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);

    }

Has anyone worked with mysql and the createuserwizard for additional info?

Any help would be appreciated. Thanks!


Your SQL statement isn't returning your newly created ID value. That isn't automatically returned when you execute an insert statement.


It turns out there is nothing wrong with the above code. I was messing around with the user id value in another function, which was causing trouble in here!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜