无法找到提供商。它可能没有正确安装。 C#使用CSV

时间:2015-01-07 08:19:41

标签: c# csv visual-studio-2012 express

我们一直在使用一种将CSV“模拟”到数据库中的连接进行编程 我们在所有应用程序中都使用它,但现在我们需要在Visual C#Express 2008上进行编程,而之前我们使用的是Visual Studio 2012.
我们将框架从4.5更改为3.5,因为这是Express 2008可以使用的 然后我们使用系统删除了一些“不需要的”。现在我们删除了try和catch以查看问题是什么:“找不到提供程序。可能没有正确安装。”
这是错误的代码:

string fileNeem = Path.GetFileName(strFileName4);
string sepperator3 = Convert.ToString(textBox2.Text);
string root = Path.GetDirectoryName(strFileName4);
if (File.Exists(@"" + root + "/schema.ini")) { File.Delete(@"" + root + "/schema.ini"); }
string[] lines = { "[" + fileNeem + "]", "Format=Delimited(" + sepperator3 + ")", "DecimalSymbol=(,)" };
System.IO.File.WriteAllLines(@"" + root + "/schema.ini", lines);

ADODB.Connection oConn = new ADODB.Connection();
oConn.Open("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + System.IO.Path.GetDirectoryName(strFileName4) + "; Extended Properties = \"Text;HDR=YES;FMT=Delimited\";", "", "", 0);
string strQuery = "SELECT * FROM [" + System.IO.Path.GetFileName(strFileName4) + "]";
ADODB.Recordset rs3 = new ADODB.Recordset();
System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter();
rs3.Open(strQuery, "Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + System.IO.Path.GetDirectoryName(strFileName4) + "; Extended Properties = \"Text;HDR=YES;FMT=Delimited\";",
ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly, 0);
adapter.Fill(dtAttrSet, rs3);
dtAttrSet.Columns.Add("");
if (File.Exists(@"" + root + "/schema.ini")) { File.Delete(@"" + root + "/schema.ini"); }
rs3.Close();
oConn.Close();
gvAttributeSet.DataSource = dtAttrSet;
return dtAttrSet;

另外,我们使用schema.ini文件来存储分隔符。填充数据表后立即删除此文件 我看到了很多问题和答案,但它似乎是ASP或他们使用Excel 有什么我们做错了吗?

1 个答案:

答案 0 :(得分:1)

Steve是对的: Provider = Microsoft.Jet.OleDb.4.0 仅在编译平台x86目标时有效。据我所知,没有办法解决这个问题,也没有计划增加支持。

但是可以使用ACE 64 Provider = Microsoft.ACE.OLEDB.12.0 link