Datagridview不保存更改到数据库

本文关键字:数据库 保存更改 Datagridview | 更新日期: 2023-09-27 18:10:22

Datagridview不保存更改到数据库。

只在表单中,而不是在数据库中。

我已经检查了数据库属性和Copy to output Directory设置为cope if newer

下面是我的代码:
public partial class ClientsManager : Form
{
    public ClientsManager()
    {
        InitializeComponent();
    }
    private void clientsBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    {
        try
        {
            this.Validate();
            this.clientsBindingSource.EndEdit();
            //this.tableAdapterManager.UpdateAll(this.databaseDataSet);
            this.clientsTableAdapter.Update(this.databaseDataSet.Clients);
            MessageBox.Show("Changes has been Saved!");
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
      }
   }
    private void ClientsManager_Load(object sender, EventArgs e)
    {
        // TODO: This line of code loads data into the 'databaseDataSet.Clients' table. You can move, or remove it, as needed.
        this.clientsTableAdapter.Fill(this.databaseDataSet.Clients);
    }

到目前为止我读过的大多数解决方案都是关于EndEdit()Update()的。

Datagridview不保存更改到数据库

您可以创建一个名为SAVE的新按钮,并将以下代码放入其中。

yourdatadapatername.update (yourdatatablenamehere)

希望有帮助

我在这个答案中找到了解决方案:

这是一个相当普遍的问题。使用|DataDirectory|替换字符串。这意味着,在Visual Studio环境中调试应用程序时,应用程序使用的数据库位于项目的子文件夹BIN'DEBUG文件夹(或x86变体)中。这工作得很好,因为你不会有任何类型的错误连接到数据库和进行更新操作。

然后,退出调试会话,通过Visual Studio Server Explorer查看数据库。此窗口具有不同的连接字符串(可能指向项目文件夹中数据库的副本)。你搜索你的表,你看不到变化。

然后问题变得更糟。如果您将数据库文件列在项目文件之间,并且将"复制到输出目录"属性设置为"始终复制",则每次重新启动调试会话时,将原始数据库文件从项目文件夹复制到输出文件夹(BIN' debug),因此您之前的更改将丢失。现在,您的应用程序也看不到之前所做的更改。

您可以将属性Copy To Output Directory更改为Copy If Newer或Never Copy来解决此问题。此外,您还可以在服务器资源管理器中更新connectionstring,以查看数据库的工作副本或创建第二个连接。第一个仍然指向项目文件夹中的数据库,而第二个指向BIN'DEBUG文件夹中的数据库。通过这种方式,您可以保持原始数据库为部署目的和模式更改做好准备,同时,使用第二个连接,您可以查看编码工作的有效结果。

对MS-Access数据库用户的特殊警告。如果您不编写或更改任何内容,查看表的简单行为也会更改数据库的修改日期。因此,如果启用了Copy标志,数据库文件将被复制到输出目录中。使用Access最好使用Copy Never。