繁体   English   中英

Datagridview 不保存对数据库的更改

[英]Datagridview not saving changes to Database

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() .. 我的代码中有这个,但仍然无法正常工作。

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

yourdatadapatername.update(yourdatatablenamehere)

希望这有帮助。

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

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

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

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

您可以停止此问题,将属性复制到输出目录更改为如果较新或从不复制则复制。 您还可以在服务器资源管理器中更新连接字符串以查看数据库的工作副本或创建第二个连接。 第一个仍然指向项目文件夹中的数据库,而第二个指向 BIN\\DEBUG 文件夹中的数据库。 通过这种方式,您可以保持原始数据库为部署目的和模式更改做好准备,同时,通过第二个连接,您可以查看编码工作的有效结果。

编辑 MS-Access 数据库用户的特别警告。 如果您不编写或更改任何内容,那么查看表的简单操作也会更改数据库的修改日期。 因此,Copy if Newer 标志启动并将数据库文件复制到输出目录。 使用 Access 更好地使用 Copy Never。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM