2013-04-02 72 views
3

朋友...... 因爲,連接字符串DNS少

OleDbConnection vcon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; 
Data Source=C:\Users\Tushar\Documents\db.accdb"); 

這在C#字符串使用的MS Access數據庫connection..see數據庫位置已經知道,它的作品。 。

但是,我想運行應用程序時,在任何地點數據庫...(IE)應採取數據庫的位置自動從任何位置(當用戶保存項目中的任何位置)

一些哥們能幫幫我..

在此先感謝..

回答

0

我建議創建在C#邏輯判斷其中DB是。一旦你知道,這是因爲字符串連接簡單:

var dbLocation = GetDbLocation(); 
OleDbConnection vcon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; 
           Data Source=" + dbLocation "); 

GetDbLocation()可以從一個配置文件中提取信息,或確定它在一些其他的方式(你有沒有給我們足夠的信息,以確定該DB位於)。

0

數據庫複製到程序App_Data

,並使用此代碼:

string path = Server.MapPath("~/App_Data") + "\\" + "db.accdb"; 

OleDbConnection vcon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; 
           Data Source="+path +""); 

希望這有助於。

0

嘗試像下面,它會幫助你...

string path = Environment.CurrentDirectory; 
      path = path + "\\db.accdb"; 
      OleDbConnection vcon = new 
OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + path); 

將您的應用程序的EXE和DB在相同的位置,並使用上面的代碼...

如果你把數據庫在文件夾數據庫然後嘗試像下面...

string path = Environment.CurrentDirectory; 
      path = path + "\\DataBase\\db.accdb"; 
      OleDbConnection vcon = new 
OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + path); 
0

你必須通過連接字符串提供數據庫位置。 OleDbConnection無法知道數據庫文件的位置。

現在,您可以做的是在運行時以任何一種方式指定您的連接字符串。

  1. 在你的處理中有連接字符串的集合,它們都指向預定位置,指定/動態選擇其中之一。即

    OleDbConnection cn = new OleDbConnection(); 
        cn.ConnectionString = variable; 
    
  2. 簡單字符串連接單個連接字符串。

無論哪種方式,你必須預先確定位置。沒有魔術代碼,它會搜索你的整個系統的.accdb文件在自動並插入。即使你寫這樣的代碼,這將是一個破碎的代碼或高級特定的代碼無論如何。

因此,它更好地管理您的connectionStrings(所有可能的預先確定的位置,你已經放置(你的數據庫文件的副本))在web.config。

或者,您可以創建一個數據庫表來存儲所有可能的連接字符串,您可以通過簡單的用戶界面添加條目並刪除條目。