2013-09-28 32 views
0

我正在使用Visual Studio Expess 2010.我試圖弄清楚如何使用openfiledialog獲取我的數據庫的路徑。使用openfiledialog獲取開放數據庫C的路徑#

目前我接近我的數據庫連接,然後儘量選擇在打開文件對話框數據庫但Windows告訴我:「這個文件正在使用,關閉文件...」

如果我已關閉我的數據庫連接我還需要做什麼才能完全關閉文件,以便我可以在openfiledialog中選擇它?

+0

你是如何關閉連接的? – Shaharyar

+0

SQLcl.cn.Close(); <---- SQLcl是我建的類來存儲我的連接。 –

回答

1

關閉連接並不會將Stream創建爲該文件。 Dispose您用於設置連接的對象。

+0

如果我只是處置SqlConnection對象? –

+0

我用我的SQLConnection對象的處置語句,並沒有發生任何事情。Windows仍然告訴我,我的文件被打開。 –

+0

不,你需要處理的是正在使用的SQLserver所有對象無論如何,因爲它們連接到它。 – Shaharyar

0

它可以在很大程度上取決於db文件的位置,例如,它在你的項目中嗎?它在你的sql服務器數據文件夾中?

試試下面的SQL給你的路徑,如果它是在數據文件夾...

select physical_name 
from sys.database_files 
where type = 0 

,如果它在你的項目的App_Data文件夾嘗試一個簡單的

Server.mappath 

編輯:如果您堅持使用對話,請嘗試以下操作:

openFileDialog.ValidateNames = false; 

請參閱this MS bug report

「首先:即使ValidateNames爲FALSE,對話始終檢查無效字符。

二:如果爲真,對話框試圖打開該文件,並警告說,如果鎖定「

編輯2:準確理解爲什麼數據庫仍然在使用 - taken from here

」的SQLSERVR.EXE過程在關閉實例的最後一次連接後,啓動會持續運行一段時間。因此,如果打開另一個連接,則不需要重新啓動。它所處的時間長度由sp_configure選項「user instance timeout」設置。默認情況下,這個設置爲60分鐘,但是你可以使用sp_configure命令來改變它。「

+0

的DB文件是當前在我的項目。 –

+0

我想用的OpenFileDialog專門來獲取路徑。我希望它是容易的誰可能是最舒服的做它的最終用戶openfiledialog。數據庫文件是一個本地的基於C#服務的數據庫e數據集 –

+0

確定檢查新代碼,您可以使用我的第一個建議之一將文件對話框指向我想要的正確位置。 –