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();
        } 

    }

   }
}
4

2 に答える 2

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...
            }
        }
    }

コマンド引数が、"f:\some directory\MyDataBase.mdb" のような引用符を使用して、mdb ファイルへの完全パスまたは相対パスとして渡されていることを確認してください。

于 2012-11-29T14:26:37.100 に答える
0

あなたの質問に答えて

ファイル名 (test.mdb など) をコマンド ライン引数として渡すことも可能だと思いますか?

Microsoft Access でコマンド ライン スイッチを使用する方法

于 2012-11-29T14:12:51.017 に答える