C# SQL Server INSERT语句未执行,但我也未收到异常

C# SQL Server INSERT语句未执行,但我也未收到异常,c#,sql-server,winforms,C#,Sql Server,Winforms,在我的按钮单击事件中,我想在表中插入一行。当我点击按钮时,我没有得到任何例外,我也没有得到我的messagebox显示。我使用messagebox来检查查询是否已执行 当我单步执行时,它跳过MessageBox,并且不会引发异常 private void BtnSend_Click(object sender, EventArgs e) { string theDate = dateTimePicker1.Value.ToString("MM-dd-yyyy"); var se

在我的按钮单击事件中,我想在表中插入一行。当我点击按钮时,我没有得到任何例外,我也没有得到我的messagebox显示。我使用messagebox来检查查询是否已执行

当我单步执行时,它跳过MessageBox,并且不会引发异常

private void BtnSend_Click(object sender, EventArgs e)
{
    string theDate = dateTimePicker1.Value.ToString("MM-dd-yyyy");

    var select = "INSERT INTO Trinity3(Date, Device_S_N, Student_Last_Name, Student_First_Name, Student_Number, School, Grade, Damage)" +
                 "VALUES (@Date, @Serial, @LastName, @FirstName, @StudentNum, @School, @Grade, @Damage)" +
                 "COMMIT";

    SqlConnection connection = new SqlConnection("Data Source=CPS1113020004; Initial Catalog=Coweta Public Schools; Integrated Security=True");               

    // Create a SqlCommand instance
    SqlCommand command = new SqlCommand(select, connection);

    // Add the parameter
    command.CommandType = CommandType.Text;
    command.CommandText = select;
    command.Parameters.AddWithValue("@Date", theDate);
    command.Parameters.AddWithValue("@Serial",txtSerial.Text);
    command.Parameters.AddWithValue("@LastName",txtLastName.Text);
    command.Parameters.AddWithValue("@FirstName",txtFirstName.Text);
    command.Parameters.AddWithValue("@StudentNum", txtStudentNum.Text);
    command.Parameters.AddWithValue("@School",txtSchool.Text);
    command.Parameters.AddWithValue("@Grade", txtGrade.Text);
    command.Parameters.AddWithValue("@Damage", txtDamage.Text);

    // Execute the query
    try
    {
        connection.Open();
        command.ExecuteNonQuery();
        MessageBox.Show("Records inserted successfully");
    }
    catch
    {
        // Handle exception, show message to user...
    }
    finally
    {
        connection.Close();
    }

    this.Visible = false;

    var searchForm = new SearchForm();
    searchForm.ShowDialog();
}

您正在抛出一个异常,但没有看到,因为catch块中没有任何内容

查阅Try with Resources约定并始终使用它。这将自动为您关闭连接,即使出现异常。这是必须的

将异常添加到catch块,以便查看错误

SQL字符串的每个部分后面都需要有空格。使用+连接时,不会创建额外的空间。因此,您的查询实际上如下所示: 插入Trinity3Date、设备编号、学生姓、学生名、学生号、学校、年级、损坏值@Date、@Serial、@LastName、@FirstName、@StudentNum、@School、@Grade、@DamageCOMMIT

您不应该在应用程序中编写查询,而应该在数据库中创建一个存储过程,该存储过程将包含获取数据所需的所有逻辑。然后,您的应用程序将只调用一个单词的存储过程,而不是使用一个表示t-sql的巨大字符串。此外,您还可以实际测试存储的进程,并确保它在不涉及应用程序的情况下工作


将[日期]放在括号内。您的日期应该是日期,而不是字符串。不要认为您需要提交行。清理解决方案并确保您处于调试模式。然后构建并确保没有错误。空的Catch块永远不会报告问题。此外,AddWithValue是一个糟糕的想法。它会跳过消息框吗?如果执行该行代码,则会显示一个消息框。您确定自上次更改后已完全重新构建代码吗?或者没有到达空的catch块?catch部分中没有任何内容,异常可能会被默默地忽略。