|DataDirectory|的使用

Ado.net2.0中新增加了一个MagicValue,可以在应用程序的配置文件的数据库链接串种使用|DataDirectory| ,例如: 

<connectionStrings>
        <add name="ConnectionString" 
             connectionString
="data source=.;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\test.mdf;" providerName="System.Data.SqlClient" />
    </connectionStrings>


原来一直使用ASP.net开发web应用,asp.net 2.0特有几个特殊的文件夹App_Data就是其中一个,web应用的数据库大可以放在这个下面,一直工作的很好。

 

......直到有一天开始写winform的程序,^_^,当然也想享受这种方便啦,可是发现Windows应用项目中不支持特殊的文件夹,根本没有这种东西!没关系咱自己建,还叫App_Data,运行发现数据库连不上,从错误信息中来看,原来Winform中把|DataDirectory|翻译成了程序启动目录apppath\bin\debug(或release),后面不带App_Data!数据库文件倒是自动复制到了运行目录下.

注:使用Debug模式|DataDirectory|将翻译成:apppath\bin\debug,Release模式翻译为:apppath\bin\debug\release文件夹.

这样非常麻烦,难不成我还要在发布的时候更换数据库存放目录?
有位我不认识的老外^_^给出了解决办法:

http://blogs.msdn.com/dataaccess/archive/2005/10/28/486273.aspx

就是在程序启动时,设置AppDomain.CurrentDomain.setData(“DataDirectory”,我的目录字符串);该方法重新设置|DataDirectory|的目录.Winform的程序那当然是在Main函数中了,废话不说了,我的代码如下:

string p = AppDomain.CurrentDomain.BaseDirectory;
            if (p.IndexOf("\\bin\\") > 0)
            {
                if (p.EndsWith("\\bin\\Debug\\"))
                    p = p.Replace("\\bin\\Debug""");
                if (p.EndsWith("\\bin\\Release\\"))
                    p = p.Replace("\\bin\\Release""");
            }
            if (!p.EndsWith("App_Data\\"))
                p = p + "App_Data\\";
            AppDomain.CurrentDomain.SetData("DataDirectory", p);

思想就是去掉调试期间(DEBUG)和发布期间(Release)的不同,这样要注意的是,发布程序的时候,数据库也要放到App_Data目录下面。
下面的代码起同样的效果,代码如下:

string dataDir = AppDomain.CurrentDomain.BaseDirectory;
            if (dataDir.EndsWith(@"\bin\Debug\")
            || dataDir.EndsWith(@"\bin\Release\"))
            {
                dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName + "\\App_Data";
                AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
            }

数据库连接配置文件与最上面asp.net的web.config配置完全相同,注意在WinForm中并不存在App_Data文件夹这个特殊文件夹,我们只需新建文件夹改名为App_Data,然后将数据库文件放入该文件夹即可.

转载于:https://www.cnblogs.com/jhxk/articles/2583680.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409710.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云对象存储 python_python 云存储

广告关闭云服务器1核2G首年99年&#xff0c;还有多款热门云产品满足您的上云需求存储桶 bucketxml python sdk 存储桶名称由两部分组成&#xff1a;用户自定义字符串 和 appid&#xff0c;两者以中划线“-”相连。 例如 mybucket1-1250000000&#xff0c;其中 mybucket1 为用户…

mysql php 入门_PHP入门教程之PHP操作MySQL的方法分析

本文实例讲述了PHP操作MySQL的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;设置Zend 软件所有 UTF-8 编码设置单个项目 UTF-8 的编码Demo1.phpheader(Content-Type:text/html; charsetutf-8;);//第一步&#xff0c;连接到 Mysql 服务器 3306//第二步参数&#…

[html] 举例说明Shadow DOM的应用场景有哪些?

[html] 举例说明Shadow DOM的应用场景有哪些&#xff1f; 可以将 shadow DOM 视为“DOM中的DOM”。它是自己独立的DOM树&#xff0c;具有自己的元素和样式&#xff0c;与原始DOM完全隔离。可以应用在组件中。个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃…

Spring in Action 3 (翻译)

第一部分 Spring的核心 用Spring我们可以做很多工作。但是当你取其核心时你会发现&#xff0c;Spring最主要的特征就是依赖注入-DI&#xff08;Dependency Injection&#xff09;和面向切面编程-AOP&#xff08;Aspect Oriented Programming&#xff09;。在第一章“开始Sprin…

and or not 优先级_快速划分测试用例优先级

在工程工期时间有限的情况下&#xff0c;怎么解决测试工期和全部测试用例执行时间之间的矛盾呢&#xff1f;怎么样的设计才能算测试用例引自:IEEE Standard 610 (1990):A set of test inputs, execution conditions, and expected results developed for a particular objectiv…

Mysql索引是有序的吗_mysql组合索引的有序性转

昨天同事关于军规里的一条mysql索引的问题咨询我&#xff0c;才发现自己也不太了解组合索引的规则。于是来记录一下&#xff1a;【推荐】如果有order by的场景&#xff0c;请注意利用索引的有序性。order by 最后的字段是组合索引的一部分&#xff0c;并且放在索引组合顺序的最…

工作405-关于vue组件开发过程中一直报错:This relative module was not found:

问题描述 在项目过程中&#xff0c;当我在路由映射表中添加url和对应组件时一直报This relative module was not found:这样的错误。检查了十几遍发现组件创建&#xff0c;导出&#xff0c;引入都没错&#xff0c;一时间心态崩了。 最后问题的解决 在看了二十几遍后才发现原来…

地址和指针的概念

地址和指针的概念转载于:https://www.cnblogs.com/LoveFishC/archive/2012/07/23/3846506.html

工作406- Error:Node Sass version 5.0.0 is incompatible with ^4.0.0 问题解决

Error:Node Sass version 5.0.0 is incompatible with ^4.x 问题解决 此错误来自sass-loader.因为node-sasslatest为v5.0.0,而sass-loader期望值为^4.0.0 目前解决方案如下&#xff1a; //卸载 node-sass npm uninstall node-sass //然后安装最新版本&#xff08;5.0之前&…

keil写文字怎么会乱码_主持稿怎么写才会吸引人

现在你是不是想要知道一个主持人它是怎么样把我们都吸引到节目当中来的&#xff0c;当然就是靠的主持稿了&#xff0c;那这个时候你就想要知道了&#xff0c;它应该要怎么写才会吸引人呢&#xff0c;最主要的一点就是需要我们一来就先声夺人&#xff0c;很多的优秀主持人都会这…

dropdownlist三级联动怎么实现_一张表实现三级联动

今天是七夕&#xff0c;七夕快乐&#xff0c;大家今天有没有人约呢&#xff1f;相信大部分的Access玩家都是玩Excel的高手&#xff0c;很多的功能在Excel中实现对大家来说都是小菜&#xff0c;比如今天要讲的联动。那么&#xff0c;我们现在就来讲一下在Access中怎么用一张表实…

Windows Phone开发(29):隔离存储C 转:http://blog.csdn.net/tcjiaan/article/details/7447469...

本文是隔离存储的第三节&#xff0c;大家先喝杯咖啡放松&#xff0c;今天的内容也是非常简单&#xff0c;我们就聊一件东东——用户设置。当然了&#xff0c;可能翻译为应用程序设置合适一些&#xff0c;不过没关系&#xff0c;只要大家明白&#xff0c;它就是用于保存我们的应…

工作407-启动vue项目出现Module build failed (from ./node_modules/sass-loader/dist/cjs.js): ValidationError: I

This dependency was not found:* !!vue-style-loader!css-loader?{"sourceMap":true}!../../node_modules/vue-loader/lib/style-compiler/index?{"vue":true,"id":"data-v-ef68022e","scoped":true,"hasInlineConf…

go 函数名之前括号中的内容_2020 重学 Go 系列:09. 一篇文章理解 Go 里的函数

1. 关于函数 函数是基于功能或 逻辑进行封装的可复用的代码结构。将一段功能复杂、很长的一段代码封装成多个代码片段(即函数)&#xff0c;有助于提高代码可读性和可维护性。在 Go 语言中&#xff0c;函数可以分为两种&#xff1a;带有名字的普通函数没有名字的匿名函数由于 Go…

百度地图gif图标_华为手机误删照片怎么找回?手机怎么快速制作GIF动图

对于华为手机&#xff0c;国内的很多人群都是非常喜欢的&#xff0c;特别是哪些花粉们简直就是疯狂&#xff0c;但是当我们使用华为手机误删了照片应该怎么办&#xff1f;如何才能找回误删的照片&#xff1f;误删手机照片怎么找回&#xff1f;不用担心&#xff0c;下面就让我们…

Envi 4.7 破解安装及下载(转)

Envi 4.7下载&#xff1a;http://dl.dbank.com/c0xlwdke94安装Envi4.7时候如果提示需要license&#xff0c;那么按照如下步骤操作&#xff1a;1. 在License wizard 中选择"Install a license you have received"&#xff0c;点击"Next"2. 在Select a licen…

工作408- Module build failed (from ./node_modules/sass-loader/dist/cjs.js)

发现版本不对&#xff0c;于是执行npm uninstall sass-loadernpm install sass-loader7.1.0 --savenpm install style-loadernpm install node-sass安装对应的版本&#xff0c;搞定。

mysql 获取结果_【原创】7. MYSQL++中的查询结果获取(各种Result类型)

在本节中&#xff0c;我将首先介绍MYSQL中的查询的几个简单例子用法&#xff0c;然后看一下mysqlpp::Query中的几个与查询相关的方法原型(重点关注返回值)&#xff0c;最后对几个关键类型进行解释。1. MYSQL的查询实例下面的两个例子分别是STORE(所有数据一次性从服务器拉到本地…

Error loading WebappClassLoader

Error: 严重: Error loading WebappClassLoader context: /oa.myeclipse.bak delegate: false repositories: /WEB-INF/classes/----------> Parent Classloader:org.apache.catalina.loader.StandardClassLoader3bc473 org.apache.struts.action.ActionServletjava.l…

python内置函数返回序列中最大元素_Python之路(第八篇)Python内置函数、zip()、max()、min()...

一、python内置函数abs()求绝对值例子print(abs(-2))all()把序列中每一个元素做布尔运算&#xff0c;如果全部都是true&#xff0c;就返回true,但是如果是空字符串、空列表也返回true例子print(all([1,2,1,]))输出结果False例子2print(all())输出结果Trueany()把序列中每一个元…