【发布时间】:2013-05-15 08:25:04
【问题描述】:
我一直在寻找与(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 Message=标准表达式中的数据类型不匹配。 来源=Microsoft Office Access 数据库引擎 错误代码=-2147217913 堆栈跟踪: 在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult 小时) 内部异常: 。”
在我的实验中,我遇到了很多问题都在同一条线上:
myDataAdapter.Fill(myDataSet, "QuickMem");
Quickmem 是我数据库中的一个表。
任何帮助或意见将不胜感激。
【问题讨论】:
-
请提供整个堆栈跟踪,而不仅仅是消息。
-
请显示您的 sql 命令文本(strAccessSelect 或 SQL 字符串)
-
好的,刚刚在我的机器上安装完MS Access,现在就可以玩了……另外,为什么你的文件在2007保存为.accdb时保存为.MDB
-
我使用了 MSDN 中的这个页面:msdn.microsoft.com/en-us/library/aa288452%28v=vs.71%29.aspx,所以我手动将它(使用另存为)保存为 MDB(2002/2003 DB)以避免复杂化,因为无论如何这对于数据库本身。
标签: c# ms-access database-connection