3

我需要将访问数据库的文件路径指定为命令行参数并将其传递给我的 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

回答你的问题

您是否认为也可以将文件名(例如 test.mdb)作为命令行参数传递?

如何在 Microsoft Access 中使用命令行开关

于 2012-11-29T14:12:51.017 回答
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:\some directory\MyDataBase.mdb”

于 2012-11-29T14:26:37.100 回答