0

と思われる単純な接続を探し回っていますが、役に立ちませんでした。(MS)Access database (.mdb).

私が使用Office 2007, Visual Studio 2010,しているのは、x64 (64 ビット) OS 上の C# Winform アプリケーションであり、アプリは x86 (32 ビット) モードで実行されています。

私はすでに SQL サーバー データベースに簡単にアクセスできますが、(MS)Access では完全に行き詰っています。Dropbox にあるデータベースに接続しようとしています。

私の接続コード:

//(string SQL = "select * from Quickmem";)

    public static DataTable SelectALL(string SQL)
    {
        var appDataPath = Environment.GetFolderPath(
                               Environment.SpecialFolder.ApplicationData);
        var dbPath = System.IO.Path.Combine(appDataPath, "Dropbox\\host.db");

        var lines = System.IO.File.ReadAllLines(dbPath);
        var dbBase64Text = Convert.FromBase64String(lines[1]);
        string folderPath = System.Text.ASCIIEncoding.ASCII.GetString(dbBase64Text);

// Actual path (which he correctly finds): C:\Users\<username>\Dropbox
        folderPath += "\\Agenda.mdb";

        string strAccessConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " + folderPath;

        string strAccessSelect = SQL;

        DataSet myDataSet = new DataSet();
        OleDbConnection myAccessConn = null;

        myAccessConn = new OleDbConnection(strAccessConn);


        OleDbCommand myAccessCommand = new OleDbCommand(strAccessSelect, myAccessConn);
        OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);

        myAccessConn.Open();


        myDataAdapter.Fill(myDataSet, "QuickMem");


        myAccessConn.Close();

        DataTableCollection dta = myDataSet.Tables;
        DataTable DT = dta[0];

        return DT;
    }

私が取得している現在の例外は

「System.Data.OleDb.OleDbException が発生しました。メッセージ = 条件式のデータ型が一致しません。ソース = Microsoft Office Access データベース エンジン ErrorCode = -2147217913 StackTrace: System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) InnerException で: .」</p>

私の実験では、すべてが同じ行で壊れている多くの問題に遭遇しました。

myDataAdapter.Fill(myDataSet, "QuickMem");

私のデータベースのテーブルであるQuickmem。

任意のヘルプまたは入力をいただければ幸いです。

4

1 に答える 1