日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用|DataDirectory| 的烦恼

發布時間:2025/3/19 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用|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); 思想就是去掉調試期間和生產期間的不同,這樣要注意的是,發布程序的時候,數據庫也要放到App_Data目錄下面。

總結

以上是生活随笔為你收集整理的使用|DataDirectory| 的烦恼的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。