在 Visual Studio 2010 C# 中不允许访问数据库文件 (SQL Server Compact)
Posted
技术标签:
【中文标题】在 Visual Studio 2010 C# 中不允许访问数据库文件 (SQL Server Compact)【英文标题】:Access to database file not allowed (SQL Server Compact) in Visual Studio 2010 C# 【发布时间】:2016-07-05 18:44:08 【问题描述】:第一点:我相信这个问题已经回答了here,但它并没有解决我的问题。由于我的声誉低于 50 分,因此我(目前)还不能对这个问题发表评论。
当我的程序安装在没有管理员权限的计算机上时,它会抛出此错误
不允许访问数据库“PayeeList.SDF”
在App Manifest中,我以管理员身份添加启动程序,这个问题没有出现,但是当我启动我的程序并且它要求管理员权限时有点烦人,我希望我的程序在没有管理员权限的情况下运行.
这些是我的文件安装属性和下面我的数据库的文件属性。
第二点:
如果我这样做正确,请告诉我。
*** 上原问题的解决方案:
确保使用 |DataDirectory|在您的连接字符串中。这是 一个例子
connectionString="数据源=|DataDirectory|MyDB.sdf"
如果我改变它,这会解决我的问题吗?
第三点:点击确定后还是会出现这个错误。
需要更多信息,请告诉我。
【问题讨论】:
【参考方案1】:可能需要考虑两件事:
安装目录: 如果没有管理员权限,Windows 将不允许更改安装目录中的任何文件(Program Files 或 Program Files (x86))。
您可以创建自己的目录并将数据库存储在:
用户目录\AppData\Roaming\
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
当前登录用户可以访问。
您可以使用的所有用户:
C:\ProgramData
Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)
所有用户都可以访问。
连接字符串: 您可以将连接字符串存储在全局静态属性或变量中,以便在当前应用程序中轻松访问它。 您可以使用 Application.StartupPath 获取当前应用程序目录。
或者您可以在 App.config 文件中修改您的连接字符串:
也可以使用代码设置dataDirectory路径:
string path =Application.StartupPath; // or Any Path
AppDomain.CurrentDomain.SetData("DataDirectory", path);
【讨论】:
这是我在 app.config 中的连接字符串<connectionStrings> <add name="MyApp.Properties.Settings.PayeeListConnectionString" connectionString="Data Source=|DataDirectory|\PayeeList.sdf" providerName="Microsoft.SqlServerCe.Client.3.5" />
如何修改 App.Config 文件中的连接字符串?我要写什么代码?
对不起,问题似乎与我的预期不同,感谢您的回答。我更改了我的异常设置,我发现,默认情况下,我在我的程序文件夹中读取和写入文件,这是不允许的。我应该读/写应用程序文件夹中的文件,我会试试看。以上是关于在 Visual Studio 2010 C# 中不允许访问数据库文件 (SQL Server Compact)的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2010 Express C#中的“导航到”在哪里
Visual Studio 2010 C# 表单项目 - 拖放 - 最佳方法?
使用 Visual Studio 2010 C# 的数据透视表
从 Visual Studio 2008 升级到 Visual Studio 2010 速成版
如何使用 C# 在 Visual Studio 2010 中使用正则表达式或 HTMLAgilityPack 抓取 HTML 页面的特定部分?
分析一个用 C++ 编码的 OpenGL 2.0 游戏,入口项目是 C#,全部在 Visual Studio 2010 中?