C# 未更新的行

C# 未更新的行,c#,database,setting,C#,Database,Setting,我编写了以下函数,用于更新数据库中的学生: public bool UpdateStudent(Student stu) { Console.WriteLine("StudentManger.UpdateStudent): Called"); int rowsChanged = 0; using (var cnn = new SqlConnection( Properties.Settings.Default.universityConnectionSt

我编写了以下函数,用于更新数据库中的学生:

public bool UpdateStudent(Student stu)
{
   Console.WriteLine("StudentManger.UpdateStudent): Called");

   int rowsChanged = 0;

   using (var cnn = new SqlConnection(
          Properties.Settings.Default.universityConnectionString))
   {
      using (var cmd = new SqlCommand("UPDATE Student " +
              "SET FirstName = @FirstName, " +
              "lastName = @LastName, " +
              "birth = @birth " +
              "WHERE id = @id", cnn))
      {
        cmd.Parameters.Add(new SqlParameter("@FirstName", stu.FirstName));
        cmd.Parameters.Add(new SqlParameter("@LastName", stu.LastName));
        cmd.Parameters.Add(new SqlParameter("@id", stu.ID));
        cmd.Parameters.Add(new SqlParameter("@birth", stu.Birth));

        cnn.Open();
        rowsChanged = (int)cmd.ExecuteNonQuery();
        Properties.Settings.Default.Save();
      }
    }
    Properties.Settings.Default.Save();
    return (rowsChanged != 0);
  }
但当我调用函数时,实际上没有数据被保存到数据库中


有人能告诉我为什么吗?

有了您在中提供的整个解决方案和信息,您的代码很好。问题是.mdf数据库文件在项目中设置为“复制到输出目录”:“始终”。将此属性更改为“较新时复制”(或“不复制”并自己将其移动到bin文件夹),这样在重新运行应用程序时不会覆盖您所做的更改。重要的是,您不会看到您在应用程序中所做的更改反映在项目根目录中的.mdf数据库文件中。它实际上会被复制到/bin文件夹中,而这就是保存更改的地方。因此,如果不更改“Copy to Output Directory”属性,它将在每次构建时从根目录复制到/bin文件夹。因此,这些变化似乎没有被持久化,而实际上它们是持久化的。

我认为这不是一个坏问题。你的应用程序可能有太多不同的问题,很难解决。(我同意@frenchie。)是否抛出异常?您是否连接到正确的数据库?是否加载了正确的连接字符串?你试过什么?为什么你要把一个int转换成int?您还忘了关闭连接。我和frenchie在这一点上是一致的。我想你应该先用一个简单的阅读查询来尝试你的连接。从表中加载所有内容时会发生什么?如果这样做行得通,那么至少我们会知道这不是连接问题。这是包装在一个
try…catch
中的,它是在吞咽异常还是什么?你能穿过它看到没有爆炸吗?正在运行更新的帐户是否具有更新数据库的权限?