zoukankan      html  css  js  c++  java
  • |DataDirectory|的使用

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

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

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

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

    注:使用Debug模式|DataDirectory|将翻译成:apppathindebug,Release模式翻译为:apppathindebug elease文件夹.

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

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

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

     1       string p = AppDomain.CurrentDomain.BaseDirectory;
     2             if (p.IndexOf("\bin\") > 0)
     3             {
     4                 if (p.EndsWith("\bin\Debug\"))
     5                     p = p.Replace("\bin\Debug", "");
     6                 if (p.EndsWith("\bin\Release\"))
     7                     p = p.Replace("\bin\Release", "");
     8             }
     9             if (!p.EndsWith("App_Data\"))
    10                 p = p + "App_Data\";
    11             AppDomain.CurrentDomain.SetData("DataDirectory", p);

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

    1             string dataDir = AppDomain.CurrentDomain.BaseDirectory;
    2             if (dataDir.EndsWith(@"inDebug")
    3             || dataDir.EndsWith(@"inRelease"))
    4             {
    5                 dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName + "\App_Data";
    6                 AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
    7             }

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

    认真工作、认真生活,努力做最好的自己!!!
  • 相关阅读:
    jchdl
    jchdl
    UVa 10256 (判断两个凸包相离) The Great Divide
    UVa 11168 (凸包+点到直线距离) Airport
    LA 2572 (求可见圆盘的数量) Kanazawa
    UVa 10652 (简单凸包) Board Wrapping
    UVa 12304 (6个二维几何问题合集) 2D Geometry 110 in 1!
    UVa 10674 (求两圆公切线) Tangents
    UVa 11796 Dog Distance
    LA 3263 (平面图的欧拉定理) That Nice Euler Circuit
  • 原文地址:https://www.cnblogs.com/songhuihui/p/14699298.html
Copyright © 2011-2022 走看看