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约束....无法添加重复键值
但我的数据库中没有新值
}
}
}
}
答案 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)
所以,我已经发现这段代码实际上有效,但我不知道,因为我认为我的数据库中的表会更新,但不会,只是我的数据集中的表已更新。这意味着我的代码实际上可以在我的数据集中使用。