Ошибка команды SQL Insert WinForms c#

Я вроде бы всё правильно добавляю но появляется какая - то ошибка при запросе к БД, при отладке программы появляется окно в котором показывают на ошибку где строчка cmd.ExecuteNonQuery(); Пожалуйста помогите в чём проблема. Вот весь код:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;

namespace NetDevice
{
    public partial class Form1 : Form
    {
        private SqlConnection db = null;
        private SqlCommand cmd = null;
        public Form1()
        {
            InitializeComponent();

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            db = new SqlConnection(ConfigurationManager.ConnectionStrings["Netdb"].ConnectionString);
            db.Open();
        }

        private void Login_Click_Click(object sender, EventArgs e)
        {

        }

        private void Reset_Click_Click(object sender, EventArgs e)
        {
            this.txtName.Text = "";
            this.txtPass.Text = "";
            this.txtCombo.SelectedItem = -1;
            this.txtEmail.Text = "";

        }

        private void Reg_Click_Click(object sender, EventArgs e)
        {
            try
            {
                string Name = txtName.Text;
                string Password = txtPass.Text;
                string Combo = txtCombo.SelectedItem.ToString();
                string Email = txtEmail.Text;
                cmd = new SqlCommand("INSERT INTO Users (Name, Pass, Role, Email) VALUES (@nam, @pas, @rol, @ema)", db);
                cmd.Parameters.AddWithValue("@nam", Name);
                cmd.Parameters.AddWithValue("@pas", Password);
                cmd.Parameters.AddWithValue("@rol", Combo);
                cmd.Parameters.AddWithValue("@ema", Email);
                cmd.ExecuteNonQuery();
                MessageBox.Show("Welcome: " + Name);
            } catch(System.Exception exp)
            {
                MessageBox.Show("Some Error Registration: "  + exp.ToString());
            }
        } 
    }
}

Вот фото с ошибкой: Ошибка на строке 58 (cmd.ExecuteNonQuary)


Ответы (1 шт):

Автор решения: Midnight Lizard

Думаю здесь проблема в том, что Вы что-то напутали с типами данных. Именно из-за таких ошибок использовать метод AddWithValue - дурной тон.

Прочитайте эту статью - AddWithValue is Evil, думаю она вам поможет в решении Вашей проблемы. Там описано, не только почему это плохо, но и как правильно поступать, поэтому, думаю, проблем возникнуть не должно.

→ Ссылка