我正在尝试连接下面的字符串,但它会产生编译错误。奇怪的是,它在一台机器上工作正常,但在另一台机器上抛出错误!下面是我的代码和我的错误,有人可以指出我应该改变的内容:
database = "\\\\Mithril\\Databases\\Master.mdb";
System.Collections.Hashtable lookup = new System.Collections.Hashtable();
//This is the error line
OLEDBConnection olecon = new OLEDBConnection(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + database.ToString());
这是我得到的编译错误:
Error 2 Cannot create an instance of the abstract class or
interface 'Microsoft.Office.Interop.Excel.OLEDBConnection'
编辑--------------------
我也尝试过:
using System.Data;
System.Data.OleDb.OLEDBConnection olecon = new System.Data.OleDb.OLEDBConnection(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + database.ToString());
这会产生不同的编译错误:
Error 19 The type or namespace name 'OLEDBConnection' does not exist in the
namespace 'System.Data.OleDb' (are you missing an assembly reference?
答案 0 :(得分:3)
看起来您的代码引用了Microsoft.Office.Interop.Excel.OLEDBConnection接口,您可能希望使用System.Data.OleDb.OleDbConnection接口。
excel互操作接口只能在所需程序集可用的计算机上正确构建(如果安装了Excel,可能就是这样),而System.Data.OleDb
接口是.Net框架的一部分,因此可以工作在所有安装.Net框架的机器上。
如果您打算使用excel互操作接口,那么最好将所需的互操作程序集添加到源旁边的某个“lib”目录中,并从那里引用它。见Compiling builds that have Microsoft Excel in TFS