【问题标题】:Database not found during making setup file制作安装文件时找不到数据库
【发布时间】:2013-05-11 18:47:15
【问题描述】:

当我从 bin\debugbin\release 的项目文件夹中运行我的应用程序时,它运行良好。一切以及我的数据库工作正常。

但是,当我使用调试或发布文件创建安装文件时,我的数据库无法正常工作。我将我的数据库连接设置为:

SqlCeConnection compact_con = new SqlCeConnection(@"Data Source=" + Directory.GetCurrentDirectory() + @"\chondrokotha.dat;Password=4545;");

并将chondrokotha.dat 保留在调试文件夹中。

我的文件如下所示:

之后,我将数据库放入名为 chonrokotha 的文件夹中。在这个时候错误显示像

在创建安装文件时如何解决这个问题?

【问题讨论】:

  • 但是当我将我的文件复制到另一个文件中然后在这种情况下运行应用程序数据库工作正常。
  • 我更新了显示错误的问题。请检查一下??
  • 嗯,好的——这是第一步。所以这似乎是一个访问权限问题-文件找到-但是在C:\program files目录中,您当前的用户显然没有的权限写回数据库文件!尝试将您的数据库文件放在其他地方 - 在 C:\temp 下或更好:放入 .NET 的 Isolated Storage
  • 但是包括数据库在内的所有文件都在C:\program files中。顺便问一下,我该如何解决这个问题??

标签: c# .net sql-server-ce


【解决方案1】:

根据您的错误消息,很明显,执行您的应用程序的当前用户没有写入权限到您的数据库文件所在的文件夹。这是 Windows Vista(我相信)和更高版本的默认设置 - 默认情况下,普通(非提升用户)在 C:\program files 中没有写入权限(总体而言,这是一个好事)。

你可以通过几种方式解决这个问题:

  • 将数据库文件放入用户可以写入的文件夹中,例如C:\tmpC:\Users\(username)\..... 之下的某个地方

  • 将数据库文件放入 Isolated Storage - 一种 .NET 机制,可为您提供保证用户可以写入的文件夹

  • 在您的程序文件夹下创建一个子文件夹,并授予您的用户(或Everyone)对该文件夹的写入权限

【讨论】:

  • 在第三个选项中,我是否在我的程序(在我的代码中)中为用户(每个人)授予对文件夹的写入权限。如果这样我该怎么做???
  • @DarkenShooter:研究!!!你知道谷歌,对吧?搜索visual studio setup add permissions to folder之类的,然后看看你得到的文章....e.g. this other SO question here
猜你喜欢
  • 1970-01-01
  • 2015-10-03
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-21
  • 2015-01-11
相关资源
最近更新 更多