Windows Forms: Create User Registration Or Sign Up Form With SQL Server in C#

This post shows you How to Create User Registration Or Sign Up Form With SQL Server using Dapper ORM in C# .NET Windows Forms Application.

Creating a new windows forms application project, then design a simple signup form as shown below.

Sign Up Form With SQL Server in C#

Right click on your project, then add a new item->service based database

Next, You need to connect to the local database from your visual studio, then create a simple user table.

After creating the user table, you need to add a datasource to the local database. This helps you automatically create database connection strings in the app.config file.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="SignUpApp.Properties.Settings.cn" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
</configuration>

Create the AppHelper class allows you to get connection string from the app.config file. You can easily change your connection string in the app.config file.

public static class AppHelper
{
    public static string ConnectionString => ConfigurationManager.ConnectionStrings["SignUpApp.Properties.Settings.cn"].ConnectionString;
}

Creating a User class allows you to map data between User object and User table in your database.

public class User
{
    public string UserName { get; set; }
    public string Password { get; set; }
    public string Email { get; set; }
    public string FullName { get; set; }
    public string Address { get; set; }
}

Defining an IUserRepository interface allows you to eaily modify your code

public interface IUserRepository
{
    Task<bool> Insert(User user);
}

Creating the UserRepository class inherit from the IUserRepository interface, and don't forget to implement methods in the interface.

public class UserRepository : IUserRepository
{
    public async Task<bool> Insert(User user)
    {
        using (IDbConnection db = new SqlConnection(AppHelper.ConnectionString))
        {
            var result = await db.ExecuteAsync(SignUpApp.Properties.Resources.InsertUser, new { UserName = user.UserName, FullName = user.FullName, Email = user.Email, Address = user.Address, Password = user.Password });
            return result > 0;
        }
    }
}

We will use the UserRepository class to access to your sql database using Dapper ORM in c#. So, you need to search and install the Dapper from the Manage Nuget Packages to your project.

As you know, Dapper ORM is a high performance Micro-ORM supporting SQL Server, MySQL, Sqlite, SqlCE, Firebird etc..

private async void btnSignUp_Click(object sender, EventArgs e)
{
    if (string.IsNullOrEmpty(txtUserName.Text))
    {
        MessageBox.Show("Please enter your username !", "Message", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        txtUserName.Focus();
        return;
    }
    if (txtPassword.Text != txtConfirmPassword.Text)
    {
        MessageBox.Show("Password and Confirm password don't match !", "Message", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        return;
    }
    IUserRepository repository = new UserRepository();
    bool result = await repository.Insert(new User() { UserName = txtUserName.Text, Password = txtPassword.Text, Email = txtEmail.Text, FullName = txtFullName.Text, Address = txtAddress.Text });
    if (result)
        MessageBox.Show("You have successfully signed up !", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
    else
        MessageBox.Show("Error !", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

Open your resource section, then create an InsertUser resource name as show below.

if not exists(select username from users where username=@UserName)
begin
	insert into users(username,password,email,fullname,address)
	values(@UserName,@Password,@Email,@FullName,@Address)
end

VIDEO TUTORIAL