我看了一遍,无法找到问题的答案。我正在努力做最简单的数据库。我希望能够添加/编辑/删除项目,并将它们保存到数据库中,以便下次打开时它们就在那里。
我目前正在使用VS 2013 Express并且仍然安装了2012快递。正在通过MSDN教程,甚至尝试了Northwind数据库,但它说我必须升级它,但它不允许我。所以现在我被卡住了。
目前,我已经创建了一个数据库,然后是一个新项目。我将新项目连接到数据库,并将其中一个表拖放到gridview中的表单上。为了节省空间,我不会详细介绍。我基本上遵循msdn教程创建了两个名为Customers和Orders的表,其中包含一些变量和3个条目。客户中有主键,订单中有外键。
我使用了MSDN提供的代码,类似于保存按钮自动生成代码中已有的代码,但try / catch代码除外。到目前为止我所拥有的是:
`Private Sub CustomersBindingNavigatorSaveItem_Click(sender as Object,e As EventArgs)处理CustomersBindingNavigatorSaveItem.Click 'Me.Validate() 'Me.CustomersBindingSource.EndEdit() “Me.TableAdapterManager.UpdateAll(Me.SampleDatabaseDataSet)
Try
Me.Validate()
Me.CustomersBindingSource.EndEdit()
Me.CustomersTableAdapter.Update(Me.SampleDatabaseDataSet.Customers)
MsgBox("Update successful")
Catch ex As Exception
MsgBox("Update failed")
End Try
End Sub`
我为代码并不是所有人都在道歉,我无法让它正常工作。因此,根据我的判断,看起来这段代码更新数据集而不是数据库。真的吗?如果是这样,我该如何更新数据库?当我运行程序并添加一行时,我可以单击“保存”并返回一个消息框,说它已成功运行。但是,我无法重新运行程序并显示它,更不用说关闭VS Express并将其重新启动以显示更改。谁能告诉我这里我做错了什么?谢谢。
答案 0 :(得分:0)
好的,我想我已经找到了这个问题的答案。似乎发生的事情是数据库有两个版本。一个版本存储在项目文件夹的根目录中,另一个版本存储在bin / debug文件夹中。
显然,无论出于何种原因,当您运行程序来测试代码时,它会从根数据库中提取。您进行的任何更改和保存都将复制到bin / debug中的更改。我认为这样你就可以在你的数据库中获得股票信息,而不是通过代码来改变它,这些代码可能会或可能不会按你想要的方式工作。我理解这一点,但我认为有理由希望它能够保存更改。我希望有这样的选择,如果有人知道如何,请分享。
我花了几年的时间玩数据库,开始和关闭,认为我做错了什么,而实际上它只是VS处理它的方式。如果这是你的问题,你可以做两件事之一来测试。一个是你可以进入bin / debug并复制.mdf和.ldf,然后将它们粘贴到根文件夹中,覆盖那里的两个。我不确定.ldf是做什么的,但如果没有它,它就无法运行。然后,当您进入运行时,您的更改将被反映出来。另一个选择是构建项目并在bin / debug文件夹中运行.exe。它将运行该程序,您所做的任何更改都会坚持,但同样只会在bin / debug版本中。我假设已发布的项目将保存到根目录。
我在这里找到了导致这一突破的文章:http://visualstudiomagazine.com/blogs/tool-tracker/2012/05/dealing-with-local-databases-or-why-your-updates-dont-stick.aspx