当前位置: 首页 > 编程语言 > C#

在appdata文件夹中创建sqlserver压缩文件Share

时间:2023-04-11 00:16:59 C#

在appdata文件夹中创建sqlserver压缩文件美好的。如果SQLServerzip文件不存在,实体框架会创建它。数据库的路径在存储在app.config文件中的连接字符串中定义。它是这样构建的:但是,我想将数据库放在当前用户的应用程序数据文件夹中的一个文件夹中(我的win7机器上的C:\Users\User\AppData\Roaming文件夹)。我已经尝试将连接字符串的数据源设置为%APPDATA%Database.sdf,但这不起作用,我收到“路径中的非法字符”异常。我想坚持使用connectionstring方法,因为我想为我的单元测试使用与我的实际应用程序不同的数据库。这样,可以通过在项目的根目录下放置一个app.config文件来轻松修改数据库。有人可以指导我正确的方向吗?使用以下内容:AppDomain.CurrentDomain.SetData("DataDirectory",Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData));connectionString="数据源=Database.sdf;"这告诉您的应用程序在应用程序的当前工作目录.sdf中查找数据库;这可以在任何地方,并且它可能不可写。您需要查看指定的位置:connectionString="Datasource=|DataDirectory|Database.sdf;"ADO.NET在连接字符串中查找管道字符,并将它们扩展为应用程序域中该名称的属性值。那么DataDirectory属性的值是多少?它应该由您的应用程序部署设置:项目中任何具有“复制到输出目录”属性的VisualStudio文件都将被复制到DataDirectory。在大多数情况下,DataDirectory将是一个只读文件夹。如果你的数据是只读的,这很好,但如果你想写数据,你必须将数据复制到一个可写的位置。执行此操作的最佳位置可能是Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData))。有几种方法可以做到这一点:如果您在Web上搜索示例代码来创建本地数据库,您会遇到很多糟糕的建议。不要执行以下操作:newSqlCeConnection(@"Datasource=c:usersmemyAppDatabase.sdf;");//不要这样做!我希望我不必解释为什么硬编码数据路径是错误的;但要注意,除非在连接字符串中指定完整路径,否则路径是相对于当前工作目录的。使用(varconn=newSqlCeConnection(@"Datasource=|DataDirectory|Database.sdf;")){conn.Open();//不不不!这会为标准用户抛出访问异常,//并在您修复应用程序时被删除!varcmd=conn.CreateCommand("INSERTINTOTable(column1,column2)VALUES(@p1,@p2)");...}不要尝试修改DataDirectory数据。这个目录不仅不是用户总是可以修改的,而且它归安装程序所有,而不是用户所有。修复或卸载应用程序将删除所有用户数据;用户不喜欢这样。相反,安装的数据被复制到一个用户可写的文件夹,所有的更改都对副本进行。AppDomain.CurrentDomain.SetData("DataDirectory",//错误,这会覆盖用户安装应用程序的位置!Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData));不要在代码中更改DataDirectory的值,它是由安装程序设置的,如果更改它,您将无法知道您的数据安装在哪里。如果要创建一个空数据库,只需在最终位置打开它即可。如果要打印副本,请打开装载的数据库,将其保存到您的用户位置,关闭装载的数据库,然后打开副本。我也不鼓励将数据保存到Environment.SpecialFolder.CommonApplicationData。用户可能无法写入,除非有充分的理由必须允许所有用户更改其他用户的数据,否则每个用户都应该有自己的数据库。以上就是C#学习教程:在appdata文件夹下创建sqlserver压缩文件,分享全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: