我一直在寻找一个所谓的简单连接到一个无济于事(MS)Access database (.mdb).
我使用Office 2007, Visual Studio 2010,
它是一个 C# Winform 应用程序,在 x64(64 位)操作系统上,应用程序在 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 发生消息=条件表达式中的数据类型不匹配。Source=Microsoft Office Access 数据库引擎 ErrorCode=-2147217913 StackTrace: at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) InnerException: 。”</p>
在我的实验中,我遇到了很多问题都在同一条线上:
myDataAdapter.Fill(myDataSet, "QuickMem");
Quickmem 是我数据库中的一个表。
任何帮助或输入将不胜感激。