我从文本框插入数据值的SqlCommand查询不起作用

时间:2017-10-16 04:44:08

标签: c# visual-studio-2015

using System.Windows.Forms;
using System.Configuration;
using System.Data.SqlClient;

namespace WindowsFormsApplication1
{
        public partial class Form4 : Form
        {
            String connectionString;
            SqlConnection connection;

            public Form4()
            {
                InitializeComponent();
                connectionString = ConfigurationManager.ConnectionStrings["WindowsFormsApplication1.Properties.Settings.Database1ConnectionString"].ConnectionString;   
            }

            private void button1_Click(object sender, EventArgs e)
            {
                addStudent();         
            }

            void addStudent()
            {
                using (connection = new SqlConnection(connectionString))
                using (SqlCommand first = connection.CreateCommand())
                {
                    string idNum = textBox1.Text;
                    string lname = textBox2.Text;
                    string fname = textBox3.Text;
                    string course = comboBox1.Text;    

从文本框插入值的查询无效

                    first.CommandText="INSERT INTO Students (idNo, fName, lName, course) VALUES (@idNum, @fname, @lname, @course)";            
                    first.Parameters.AddWithValue("@idNum", idNum);
                    first.Parameters.AddWithValue("@fname", fname);
                    first.Parameters.AddWithValue("@lname", lname);
                    first.Parameters.AddWithValue("@course", course);

                    try
                    {
                        connection.Open();
                        first.ExecuteNonQuery();
                    }
                    catch (SqlException e)
                    {
                        MessageBox.Show(e.Message.ToString(), "Error Message");
                    }

单击按钮时没有错误,但是如果再次单击它,我会收到错误:

  

违反PRIMARY KEY约束....无法添加重复键值

但我的数据库中没有新值

                } 
            }      
        }
}

2 个答案:

答案 0 :(得分:0)

您的插入语句不正确。你有5个参数,只传递了4个值。

first.CommandText="INSERT INTO Students (idNo, fName, lName, course) VALUES (@idNum, @fname, @lname, @course)";            
first.Parameters.AddWithValue("@idNum", idNum);
first.Parameters.AddWithValue("@fname", fname);
first.Parameters.AddWithValue("@lname", lname);
first.Parameters.AddWithValue("@course", course);

idNum可能是您的主键并设置为自动递增,在这种情况下,您不需要传递idNo,如果不自动递增,您应该确保在插入过程中不再传递相同的idNo

答案 1 :(得分:0)

所以,我已经发现这段代码实际上有效,但我不知道,因为我认为我的数据库中的表会更新,但不会,只是我的数据集中的表已更新。这意味着我的代码实际上可以在我的数据集中使用。