【问题标题】:Pogrammatically Change The Database Location以编程方式更改数据库位置
【发布时间】:2016-06-14 06:13:57
【问题描述】:

我正在使用 Visual Basic 2010 制作程序并使用 sqlserver compact 作为数据库。我有两个名为“Year2015”和“Year2016”的文件夹。这些文件夹与程序所在的位置相同。这两个文件夹本身都有一个名为“MyData.sdf”的数据库。两个“MyData.sdf”都有相同的表等。我试图做这样的事情: 当用户选择“Year2015”时,程序以“Year2015”文件夹中的“MyData.sdf”数据开始运行,当用户选择“Year2016”时,程序开始以“MyData.sdf”数据运行位于文件夹“Year2016”中。我的意思是我想以编程方式更改数据源地址。网上搜了一下。有一些解释,但我找不到代码。如果这是一个不好的问题,对不起。

【问题讨论】:

  • 我使用了 sqlserver compact。我不擅长数据库。程序无法在线运行。只是从 sdf 文件中获取数据。
  • 您可以在 app.config / web.config 文件中使用两个连接字符串,并根据选择的下拉 Year2015 / Year2016 使用这两个连接字符串从不同的文件夹数据库中获取数据,如 if else 语句。 .
  • 当用户更改下拉菜单并使用 if else 语句选择 Year2015 时,我可以进行管理。但我不知道如何让程序开始工作文件夹 Year 2015 中的数据库。我的意思是一些类似的代码:myconnection.source=CurrentDir & "Year2015/MyData.sdf" 尽可能更改数据库位置。
  • 您可以做的一件事是在 app.config / web.config 中定义两个变量,其中一个包含 Year2015 路径,第二个是 Year2016 路径,因此默认您可以设置您想要的任何内容可以使用 StringFormat("connectionstringPath={0}", pathVariable); 更改连接字符串

标签: sql-server database vb.net visual-studio


【解决方案1】:

Dave Pinal 是这方面的天才,我碰巧读到了他关于这个主题的博客:

ALTER DATABASE TestDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO

-- 分离数据库

EXEC MASTER.dbo.sp_detach_db @dbname = N'TestDB' GO

-- 将 MDF 文件从 Loc1 移动到 Loc 2 -- 重新附加数据库

CREATE DATABASE [TestDB] ON ( FILENAME = N'F:\loc2\TestDB.mdf' ), ( FILENAME = N'F:\loc2\TestDB_log.ldf' ) FOR ATTACH GO

注意:甚至他的评论部分也很棒!

*来自 PINAL 的源脚本。 http://blog.sqlauthority.com/2012/10/28/sql-server-move-database-files-mdf-and-ldf-to-another-location/

【讨论】:

  • 谢谢。 Dave Pinal 已经清楚地解释了我想要什么。但是在另一种编程语言中。尝试将代码更改为vb2010 express。但每次都会出现一些错误。
  • 我的意思是,当我编写 Dave Pinal 的代码时,Visual Basic 会强调代码,因为它不是用 Visual Basic 语言编写的。我试图将其更改为 vb2010 lang。如果我能做到,那就太好了……
  • 啊。那么在这种情况下,这个链接可能会起作用:一个人在 VB 2010 中移动了一个 localdb。您也许可以了解他如何编写代码来工作? link
  • 也许我们可以让我们的程序将数据库源从文件夹“Year2015”更改为文件夹“Year2016”,而不是将数据库从文件夹“Year2016”移动到“Year2015”。感谢您的帮助。
  • 没问题。我学到了更多的东西,你就会更接近一个可接受的替代方案。 :)
【解决方案2】:

我终于为这个问题创建了自己的代码。我想将它分享给使用 VB2010 和 SQL Server Compact 并希望更改活动表单的数据源的人。代码是:

Dim sConnectionString As String
sConnectionString = "Data Source=" & My.Computer.FileSystem.CurrentDirectory & "\Year2015\MyData.sdf"
TableAdapterManager.Connection.ConnectionString = sConnectionString

这将更改您的活动表单的数据源。其他表单继续使用默认来源

【讨论】:

    猜你喜欢
    • 2019-07-16
    • 1970-01-01
    • 2012-01-12
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多