尝试在C#中将文本框中的文本添加到SQL表中

时间:2015-07-10 10:34:48

标签: c# sql sql-server

我尝试使用SQL参数将文本框中的文本添加到SQL数据库中。

我已经测试了连接并且它正在打开,但我仍然从try,catch语句中获得异常。我可能会出错的任何想法?

这是我的代码:

private void button3_Click(object sender, EventArgs e)
    {
        try
        {
            SqlConnection cnn = new SqlConnection(@"Server=.\SQLEXPRESS;Initial Catalog=MyAdventureWorks;Trusted_Connection=yes;");


            SqlCommand addEmployee = new SqlCommand("INSERT INTO dbo.DimEmployee (ParentEmployeeKey, FirstName, LastName, NameStyle, CurrentFlag, SalesPersonFlag)" + "Values (@parentEmployeeKey,@firstName, @lastName, @nameStyle, @currentFlag, @salesPersonFlag)", cnn);

            addEmployee.Parameters.AddWithValue("@parentEmployeeKey", textBox1.Text);
            addEmployee.Parameters.AddWithValue("@firstName", textBox2.Text);
            addEmployee.Parameters.AddWithValue("@lastName", textBox3.Text);
            addEmployee.Parameters.AddWithValue("@nameStyle", textBox4.Text);
            addEmployee.Parameters.AddWithValue("@currentFlag", textBox5.Text);
            addEmployee.Parameters.AddWithValue("@salesFlag", textBox6.Text);

            cnn.Open();
            addEmployee.ExecuteNonQuery();
            cnn.Close();

            MessageBox.Show("Employee added to database");
        }
        catch (SqlException ex)
        {
            MessageBox.Show("An unknown error occured");
        }

1 个答案:

答案 0 :(得分:1)

如果是这种情况,您可以将命令中的最后一个参数定义为@salesPersonFlag,但是尝试使用@salesFlag名称在参数集合中添加此值。它们应该是一样的。

更改您的

addEmployee.Parameters.AddWithValue("@salesFlag", textBox6.Text);

addEmployee.Parameters.AddWithValue("@salesPersonFlag", textBox6.Text);

还可以使用using statement自动处理您的连接和命令,而不是手动调用Close()方法。

尽量不要AddWithValue使用AddIt may generate unexpected and surprising results sometimes。使用using(var cnn = new SqlConnection(conString)) using(var addEmployee = con.CreateCommand()) { // Set your CommandText property // Add your parameter values with Add method3 // Open your connection // Execute your query } 方法重载来指定参数类型及其大小。

{{1}}