Ошибка команды 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());
}
}
}
}
Ответы (1 шт):
Автор решения: Midnight Lizard
→ Ссылка
Думаю здесь проблема в том, что Вы что-то напутали с типами данных. Именно из-за таких ошибок использовать метод AddWithValue - дурной тон.
Прочитайте эту статью - AddWithValue is Evil, думаю она вам поможет в решении Вашей проблемы. Там описано, не только почему это плохо, но и как правильно поступать, поэтому, думаю, проблем возникнуть не должно.
