Access 数据库不会从 VB.NET 更新
Posted
技术标签:
【中文标题】Access 数据库不会从 VB.NET 更新【英文标题】:Access database won't update from VB.NET 【发布时间】:2013-08-07 08:59:00 【问题描述】:有人可以帮我弄清楚如何让 VB.NET 更新其连接的 MS ACCESS 数据库吗?
MS Access 2013 Visual Studio 2012(框架 4.0)
问题:点击“保存”按钮后,我的 DataGrid 不会更新其源 MS Access 数据库。只是
基本上,我只是以标准方式建立连接。这是我失败结构的一个非常通用和基本的版本。
Imports System.Data.OleDb
Public Class Form1
Private Sub StudentBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) Handles StudentBindingNavigatorSaveItem.Click
Me.Validate()
Me.StudentBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.TestdbDataSet)
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'TestdbDataSet.Student' table. You can move, or remove it, as needed.
Me.StudentTableAdapter.Fill(Me.TestdbDataSet.Student)
End Sub
End Class
这只是安装向导中系统生成的代码。在过去的 8 个小时里,我一直在尝试解决这个看似良性的问题。我只是累坏了。
【问题讨论】:
迂腐提示:该问题与 VB.NET 无关。这只是您用来调用 System.Data.OleDb 等 .NET 组件的编程语言。 【参考方案1】:社区,
经过一些额外的研究和大量的试验和错误,我已经弄清楚如何让 vb.NET 更新其 MS ACCESS 数据库。基本上,您需要更改导入数据库的一个属性,并更改导入数据集的更新命令。这是完整的步骤演练。
►MS Access 2013 ►Visual Studio 2012 ►.NET Framework 4.5
(为获得最佳效果,请谨慎执行每个步骤)。
第 1 步:创建示例 MS Access 数据库
表名称:**“表 A” 字段 1:“ID”| [自动编号产品密钥] 字段 2:“标题”| “样品 A”、“样品 B”、...“样品 G” 字段 3:“Val”| "a", "b", ..., "g" 另存为:“SampleAccessDatabase.mdb” 关闭:关闭 MS Access第 2 步:打开 Visual Studio 2012 项目
新项目:模板 ► Visual Basic ►“Windows 窗体应用程序”第 3 步:连接到 MS Access 数据库
添加新数据源 ► 数据库 [Next>] ► 数据库 [Next>] ► 新连接 添加连接窗口:数据源 ►“Microsoft Access 数据库文件 (OLE DB)” 添加连接窗口:数据库文件名 ► 浏览 ► 抓取“SampleAccessDatabase.mdb”文件 ► [点击确定] 添加连接窗口:[点击 OK] ► [Next>] ► [点击 Yes] ► [Next >] 选择您的数据库对象:选择“表 A”► 完成第 4 步:放置控件对象
数据源:抓取“表 A”并将其放在“Form1”对象上第 5 步:更改数据集属性
解决方案资源管理器:选择“SampleAccessDatabase.mdb” 属性:选择“复制到输出目录”► 更改为 “如果较新则复制”第 6 步:更改 TableAdapter 更新命令
解决方案资源管理器:双击“SampleAccessDatabaseDataset.xsd” 窗格:在中间窗格中选择“Table ATableAdapter”对象 属性:通过单击下拉菜单并选择 [新建] 展开 [更新命令] 更新命令:通过单击省略号 [...] 打开 [CommandText] 添加表:选择“表 A”并点击 [添加] 查询生成器:在词 SET 之后键入 "Field2=?"。回车 查询生成器:在单词 "WHERE" 之后输入 "(Field1=?"。[点击确定]第 7 步:测试一下
CTRL+F5:将“Field2”更改为“1”、“2”、...“7” ► 关闭表单/应用程序 CTRL+F5:查看更新的 DataGrid就是这样。现在,您可以在 Visual Studio 2012 中创建您的 .NET 桌面应用程序,并能够存储和更新您的 MS Access 数据库 (2013) 中的数据。
【讨论】:
-1。我通常赞成自我回答,但你的回答并没有说明问题所在。 “经过一些额外的...,我想出了如何让 vb.NET 更新其 MS Access 数据库。” 你是说我的自我回答没有定义它正在解决的问题。第一句话不是说的吗?好吧,我会采纳你的任何建议。根据谷歌的结果,其他几个人也遇到了这个问题,我认为这篇文章可以作为他们的助手。 就是这样。现在,您可以在 Visual Studio 2012 中创建您的 .NET 桌面应用程序,并能够存储和更新您的 MS Access 数据库 (2013) 中的数据。"【参考方案2】:如果您使用 Visual Studio 上的开始按钮启动应用程序,它会将新数据库复制到您的应用程序文件(存储在 "/debug/youraplication.exe" 中)。 尝试在调试文件夹中直接执行 youraplication.exe,然后尝试使用您的应用程序插入/删除/更新您的数据库,然后关闭您的应用程序,现在打开存储在 debug 文件夹中的 databasae.accdb,现在您可以看到您的数据库包含您的输入
【讨论】:
【参考方案3】:我仍然有这个问题,无法解决希望像您一样“强制”更新。 到目前为止,似乎我拥有的每个数据集都至少有一个以编程方式填写的字段,并且没有关联的控件,用户可以在表单上编辑该字段,数据集不允许更新/删除,只能新建和插入。 不过我可能走错了路。
【讨论】:
【参考方案4】:这解决了问题:
第 5 步:更改数据集属性
解决方案资源管理器:选择“SampleAccessDatabase.mdb” 属性:选择“复制到输出目录”►更改为“如果较新则复制”
我的问题是应用程序总是将新数据库复制到应用程序的调试文件夹...
【讨论】:
以上是关于Access 数据库不会从 VB.NET 更新的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET - VB.NET - 从 MS-Access 数据库中检索记录
如何从 Access 数据库 VB.net 中检索特定数据?