【发布时间】:2013-04-28 01:00:07
【问题描述】:
我正在尝试在 DataGridView 发生更改后更新数据库。
改了几次代码,我就到了这个单行:
primeTableAdapter.Update((PrimeDataSet.PrimeDataTable)(primeDataSet.Tables["Prime"]));
该方法返回添加/编辑的正确行数,并在不关闭整个应用程序的情况下再次输入表单,一切似乎都很好。新行保存在 DataGridView 中。但是,Access 文件并没有改变一点,所以当我重新启动应用程序时,它们就消失了。
我已使用“添加新数据源”向导将 DataGridView 绑定到表,并且我使用的是 Visual Studio 2010。
我还在:Inserting data from a DataGridView to a database 找到了代码,它似乎与我必须做的类似,但我无法将 vb.net 代码翻译成可以编译的东西。但是,我很确定这真的非常接近我必须做的事情。
稍后编辑:我已将数据库添加到项目中。通过将 Copy to Output Directory 属性设置为 Copy if Newer,更改在会话之间保持不变。
【问题讨论】:
-
为了正确更新适配器,您需要将适当的 INSERT、UPDATE、DELETE 命令连接到它。您还需要确保 DatagridView 绑定到 DataTable,以便您在 DGV 中进行的所有更改都反映到底层数据源。
-
向导解决了这个问题。 DataGridView 也绑定到 DataTable...
-
如果您需要了解自己在做什么,我不会依赖向导。如果您不熟悉此代码,请先编写代码。
-
我已经了解了 C# 中数据库通信的基础知识。在我看来,与 Java 相比,这是很多不必要的痛苦。但是,我不得不在我的学校项目中使用 C# 和这个特定的向导。我确信它比经典方法更快更容易,这就是为什么直到现在我还没有找到任何可行的解决方案这绝对令人沮丧。我发现添加在整个应用程序运行过程中持续存在非常奇怪,这让我相信问题不在于绑定,而在于数据库文件的某些访问权限。你遇到过这种情况吗?
-
我的意思是:如果绑定确实有问题,它不应该简单地忽略我在 DGV 中所做的更改吗?它们在整个会话(启动)中一直存在,但在另一个会话启动时它们会消失......
标签: c# ms-access datagridview dataadapter