と思われる単純な接続を探し回っていますが、役に立ちませんでした。(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。
任意のヘルプまたは入力をいただければ幸いです。