• 关于|DataDirectory| (转载)


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

     <connectionStrings>
            
    <add name="ConnectionString" connectionString="data  source=.\SQLEXPRESS;Integrated  Security=SSPI;AttachDBFilename=|DataDirectory|data.mdf;User  Instance=true" 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!数据库文件倒是自动复制倒了运行目录下(带着App_Data的目 录)没关系,咱自己加上,把上面的链接串改成这样
     <connectionStrings>
            
    <add name="ConnectionString" connectionString="data  source=.\SQLEXPRESS;Integrated  Security=SSPI;AttachDBFilename=|DataDirectory|App_Data\data.mdf;User  Instance=true" providerName="System.Data.SqlClient" />
     
    </connectionStrings>
    一运行,哈哈,链接成功了。试着录入几个数据,保存,ok没问题!退出,再运行,一看傻眼了,刚才录入的数据不见了!研究半天明白了,原来每次运 行,.net都自动复制了一份数据库到运行目录,所以上次的数据就都丢失了!想到两个解决办法,1,把数据库的属性中的“复制到输出目录”设置为“不复 制”,这样Debug和Release编译版本各用各的数据库,原始的数据库始终是空的!(好像也有用)2,链接到程序目录中的App_Data下的数据 库。由于对第一种解决办法,自我感觉有点儿迷惑和Webform中的经验不一致,所以决定用第二种,Google了一下,有位我不认识的老外^_^给出了 解决办法http://blogs.msdn.com/dataaccess/archive/2005/10/28/486273.aspx,就是在程序启动时,设置AppDomain.CurrentDomain.setData(“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);

    转自:http://kb.cnblogs.com/a/808495/

    思想就是去掉调试期间和生产期间的不同,这样要注意的是,发布程序的时候,数据库也要放到App_Data目录下面。
  • 相关阅读:
    使用jQuery修改动态修改超链接
    360安全检测出的WordPress漏洞的修复方法
    jQuery未定义错误原因(jQuery is not define)
    MySQL授权命令grant的使用方法
    .htaccess伪静态(URL重写)绑定域名到子目录实现子站点
    Ubuntu14.04配置3389远程桌面连接
    [20190531]ORA-600 kokasgi1故障模拟与恢复.txt
    [20190531]建立job与commit.txt
    [20190530]ORACLE 18c
    [20190530]oracle Audit文件管理.txt
  • 原文地址:https://www.cnblogs.com/johnwonder/p/1804249.html
Copyright © 2020-2023  润新知