2012-09-16 89 views
1

我跑進真正的磚牆試圖連接到動態數據庫。我不知道如何實現這一點,動態選擇數據庫

這是我的過程,我有一個應用程序,它需要適應工作環境的變化,說如果工作地點服務器崩潰,他們創建一個新的數據庫與名稱db_new該應用程序將連接到,而不是舊的數據庫名稱。

我已經有了一個窗口,可以在列表框中顯示來自服務器的數據庫,用戶可以指定哪個數據庫用於應用程序。但問題是,如何保存選定的數據庫名稱,以便在選擇新數據庫後運行它? ...

如管理員應該能夠更改應用程序在必要時使用的數據庫,應用程序應該繼續使用該選定的數據庫,直到管理員將其更改回新的數據庫。

請原諒,如果這個問題有點含糊,我只是把它一起在我能的最佳方式,在這個任何幫助將是非常巨大的:)

編輯:

,我不能使用文本文件或XML作爲應用程序使用的數據庫名稱應以安全的方式存儲。 :)

+0

如何顯示數據庫列表?發佈您正在使用的代碼。 –

+0

使用「顯示數據庫」查詢:) –

+1

然後你應該可以使用'row [「database_name」]得到它的名字,然後將它的值保存在web.config文件中,例如 –

回答

1

首先,您可以非常輕鬆地使用文本或XML文件:如果將信息存儲在文件中,無法由用戶下載(如我所假設的那樣),則這與安全它可以是:如果有人設法打入服務器並讀取文件,則無論如何都是遊戲超過。這就是說,我會建議你使用MySQL代理或類似的機制,並將你的WebApp指向它 - 如果故障轉移到另一個數據庫或更改底層數據庫,則可以在代理層處理,而不需要WebApp甚至不知道它:這個功能不需要成爲你的應用程序的一部分,在我的書中它不應該。

+0

okey :) ..這給了我很多思考..我會研究mysql代理..你能指出我在一個方向,我可以使用這個功能..因爲這個mysql代理是完全新的我願意瞭解它.. :) –

+0

MySQL代理很容易:從http://dev.mysql.com/doc/refman/5.5/en/mysql-proxy.html開始。你也可以看看SQLrelay http://sqlrelay.sourceforge.net/ –

+0

okey非常感謝你.. :)我會檢查一下:) –

0

你還沒有告訴我們你正在使用的語言。因此我們不能提供很好的建議。

我的第一個想法:

如果這是PHP,你可以有沿的線一般的應用程序使用的東西,

$db->execute('sql statement here'); 

,然後只在需要的時候管理員更改當前$分貝。這樣$ db-> execute()將始終在「當前」數據庫上執行。

編輯:這應該仍然在C#中工作。如果你有使用數據庫的函數調用當前數據庫連接的變量,那麼你應該可以隨時將db連接更改爲正確的數據庫,而其餘的數據連續運行,因爲它只是同一個變量。

+0

ohh ..對此,我正在使用C#.. :)非常感謝你的回答: )無論如何,以完成使用C#? –

+1

這個問題已經被C#標記了。 –

+0

oh okey ...我會試試這個,但即使應用程序關閉並重新運行,它仍然可以工作嗎? –