Click here to Skip to main content
Click here to Skip to main content

C# MySQL Profile Provider for .NET 2.0

, 13 Sep 2006
Rate this:
Please Sign up or sign in to vote.
This is a MySQL based Profile Provider written in C# for .NET 2.0


This is about a MySql Profile Provider.

I did not write the profile provider from scratch. I used a sample Microsoft Access profile provider from the Microsoft SDK, and modified it to work with MySQL.

If you are new to the .NET 2.0 Provider technology, then refer to this article to learn about how the Membership and Role provider works. Membership and Role providers for MySQL by Rakotomalala Andriniaina.

Note: This profile provider was written to work with a specific MySQL Membership and Role Provider which is from another codeproject article. This profile provider will not work unless the membership and role providers are setup and working! The Source download for this article has been updated to include the MYSQL Role,Membership, and Profile provider source.

If you are new to the .NET 2.0 Provider technology, then refer to this article to learn about how the Membership and Role provider works. However, do not use the source from the link below because the code has been updated in the link above: Membership and Role providers for MySQL by Rakotomalala Andriniaina.

Using the Provider

Step 1: Add two new tables, aspnet_profile and aspnet_applications.

CREATE TABLE 'aspnet_profile' (
  'UserId' bigint(20) default NULL,
  'PropertyNames' text,
  'PropertyValuesString' text,
  'LastUpdatedDate' datetime default NULL

CREATE TABLE 'aspnet_applications' (
  'ApplicationName' text,
  'ApplicationId' int(11) NOT NULL auto_increment,
  'Description' text,
  PRIMARY KEY  ('ApplicationId')

Step 2: Add the MySqlProfileProvider.cs source file to the app_code of the project. If you are using VB.NET, then you have two options:

  • Add a C# class Library project to your solution. Then, add the MySqlProfileProvider.cs source file to the class library project. Add the following references: MySql.Data, System.configuration, and System.Web. Next, add a project reference that points to the new class library project you just added to your original project that will be using the profile provider. When you compile the solution, the C# class library project will compile first and create the DLL, because it is being referenced by the main project. This method will allow you to debug the C# code with your main project even if it is in VB.NET.

    Note: You can also use this method for your membership and role provider source. Just add a separate C# class library project for each provider source file.

  • You will need to compile the C# source into a DLL and then add the reference to your project. Here is a link (Membership and Role providers for MySQL) to the message that will explain compiling the source into a DLL for VB.NET.

Step 3: Modify the Web.config.

 <add name="ConnString" 
      connectionString="Database=;DataSource=;User Id=;Password=;"/>

<profile defaultProvider="MySqlProfileProvider">
    <add name="MySqlProfileProvider" 
    <add name="FirstName" />
    <add name="LastName" />

Step 4: Create users.

In order for this profile provider to work, you must use the membership provider from the above mentioned article and create users through that membership provider. A profile provider is an extension of the user. The profile property records are linked to the users table via the UserId field. The UserId field should be auto incremented so it is populated when the user is created. If you would like to populate and create profile properties when the user is created, then you will need to override the ASP.NET control "CreateUserWizard". I will try to write another article soon regarding how to do that. Otherwise, use the methods in the next step in the page loads or other events.

Step 5: Read and write profile properties.

Here is the login page code-behind. This example is in VB.NET.

Protected Sub Page_Load(ByVal sender As Object, _
          ByVal e As System.EventArgs) Handles Me.Load
    If User.Identity.IsAuthenticated Then
        IntranetLogin.Visible = False
        lblWelcome.Text = "<p><strong>Welcome back " & _
                          Profile.FirstName & " " & Profile.LastName & _
                          "</strong></p><p>Applications " & _ 
                          "are available from the menu on the right side."
        lblWelcome.Text = "<p>Login or Create a user account to " & _ 
                          "access Intranet applications.</p><p>" & _ 
                          "Quick Links on this page are available " & _ 
                          "to unregistered and registered users."
    End If
End Sub

Protected Sub SaveProfile_Click(ByVal sender As Object, _
          ByVal e As System.EventArgs) Handles SaveProfile.Click
         'Get Profile of current user
    If User.Identity.IsAuthenticated Then

        'Populate some Profile properties
        Profile.FirstName = "My FirstName"
        Profile.LastName = "My LastName"
    End If
End Sub


  • 09-13-2006 - Updated the source and article information
  • 07-10-2006 - Updated some typos and errors


This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


About the Author

Web Developer
United States United States
.Net Developer

Comments and Discussions

QuestionAttention to the case PinmemberGluups26-Jul-13 15:32 
Generalstrange problem Pinmembermascix11-Jul-09 7:34 
GeneralRe: strange problem PinmemberGluups26-Jul-13 15:40 
GeneralRe: strange problem Pinmemberozkan.pakdil27-Jul-13 4:55 
GeneralProfiler Pinmemberlav naphade25-Apr-09 0:39 
GeneralRe: Profiler PinmemberGluups26-Jul-13 15:42 
GeneralData not passing to PropertyStringsValue field Pinmembermaven4champ25-Mar-09 19:31 
GeneralMySQL Membership, Role, Personalization and Profile providers PinmemberAlexRiley14-Feb-09 9:32 
QuestionWhat I did... [modified] PinmemberZachMcBunklesnot22-Sep-08 13:23 
AnswerRe: What I did... Pinmembermathinayagam12330-Sep-08 23:36 
GeneralMySql 5 Code [modified] Pinmemberpc.huff25-Apr-08 10:22 
GeneralRe: MySql 5 Code PinmemberHawkmoth7-Aug-08 4:47 
GeneralRe: MySql 5 Code [modified] PinmemberHawkmoth7-Aug-08 5:43 
AnswerRe: MySql 5 Code Pinmemberdrobole21-Sep-08 15:33 
Generalbugs [modified] PinmemberPerth_shan4-May-07 0:02 
GeneralRe: bugs PinmemberEdacio12-Oct-07 7:23 
Generalmysql 5.0 Pinmemberdarkducke21-Apr-07 7:15 
General404 on the mentioned download PinmemberSeanKinsey2-Mar-07 3:05 
GeneralRe: 404 on the mentioned download Pinmemberverocp8-Jun-07 3:13 
GeneralRe: 404 on the mentioned download PinmemberFordGT9026-Jul-07 0:49 
GeneralRe: 404 on the mentioned download Pinmembercabaret3-Sep-07 23:57 
Generalnull reference PinmemberDanillo5514-Dec-06 17:07 
QuestionSetPropertyValues getting called for reading values? Pinmemberratty762-Nov-06 2:20 
AnswerRe: SetPropertyValues getting called for reading values? PinmemberEdacio9-Nov-06 7:22 
GeneralWeb Application Projects Pinmemberjawstress28-Oct-06 4:53 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.141220.1 | Last Updated 13 Sep 2006
Article Copyright 2006 by Edacio
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid