2012-11-29 38 views
3

我需要指定訪問數據庫的文件路徑作爲命令行參數,並將其傳遞給我的C#程序,該程序將打開並對其執行操作。如何使用命令行參數中的文件路徑在C#中打開訪問數據庫?

在命令提示符中,我輸入F:\\count,我應該能夠使用args [0]來訪問,但是我得到了Invalid value for key 'data source'異常。

當我在代碼中放入與string path = "F:\\count"相同的路徑時,它可以工作。

請告訴我我做錯了什麼!我迷路了。

這裏是我的代碼:

namespace CountProjectPages 
{ 
    public class CountProjectPages 
    { 
    private static OleDbConnection myConnection; 

    static void Main(string[] args) 
    { 
     try 
     { 
      string path = args[0]; 
      AppDomain.CurrentDomain.SetData("DataDirectory",path); 

      myConnection = new OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data Source=|DataDirectory|\\test.mdb;Jet OLEDB:Database Password=aaa"); 
       string myScalarQuery = "SELECT COUNT (Content.Page) from Content"; 
       OleDbCommand myCommand = new OleDbCommand(myScalarQuery, myConnection); 
       myConnection.Open(); 
       int total = (Int32)myCommand.ExecuteScalar(); 
       Console.WriteLine(total); 

       Console.WriteLine("DataSource: {0}",myConnection.DataSource); 

     } 
     catch (Exception ex) 
     { 
      Console.WriteLine("Ex: " + ex); 
     } 
     finally 
     { 
      myConnection.Close(); 
     } 

    } 

    } 
} 
+0

當您從參數中讀取時,您是否贊成輸入\ – ryadavilli

+2

嘗試刪除| DataDirectory |之間的'\\'和'test.mdb'。這有幫助嗎? – Blachshma

+0

它在我刪除| DataDirectory |之間的'\\'時起作用。和test.mdb – jenya

回答

0

檢查這個代碼:

static void Main(string[] args) 
    { 

     string dbPath = null; 
     if (args.Length > 0) 
     { 
      dbPath = args[0]; 
      string connectionString = "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=" + dbPath + ";"; 
      using (OleDbConnection conn = new OleDbConnection(connectionString)) 
      { 
       conn.Open(); 

       //TODO: handle other db commands... 
      } 
     } 
    } 

確保命令參數爲MDB文件的完整或相對路徑使用引號這樣過去了:「F:\一些目錄\ MYDATABASE .mdb「

相關問題