2011-08-29 70 views
2

我尝试使用C#连接到DBF数据库(我尝试3种连接的)如何连接到DBF数据库

string connectionString = @"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\employees.dbf;"; 
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\employees.dbf;Extended Properties=dBASE IV;"; 
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\employees.dbf;Extended Properties=dBASE IV;User ID=Admin;Password=;"; 

using (OdbcConnection connection = new OdbcConnection(connectionString)) 
{ 
    connection.Open(); 
} 

,我得到了错误

ERROR1:

ERROR [HY024] [Microsoft][ODBC dBase Driver] '(unknown)' is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides.
ERROR [IM006] [Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed
ERROR [HY024] [Microsoft][ODBC dBase Driver] '(unknown)' is not a valid path. Make sure that the path name is spelled correctly and that you are connected to the server on which the file resides.

或错误2:

ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

what c一个是问题?

在此先感谢

回答

7
Dim Conn As New OLEDBConnection 
Conn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\folder;Extended Properties=dBASE IV;User ID=Admin;Password=;" 

要从数据库表中选择,你必须做到以下几点(例如):

"SELECT * FROM tblCustomers.DBF" 

(注意,表名之后的DBF)

+1

得到此错误:错误[IM002] [微软] [ODBC驱动程序管理器]数据源找不到名称并且没有指定默认驱动程序 – Gali

+1

如果您使用的是64位服务器,则需要使用“Provider = Microsoft.Jet.OLEDB.12.0”。我知道这是一个古老的线程,但只是有人偶然发现这个..... –

+0

谢谢Crisim II Numenoreano –

2

两件事情:

首先,请尝试以下连接字符串:

string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\;Extended Properties=dBASE IV;"; 

注意你没有在连接字符串中指定的文件名(这将是你的SELECT或其他语句的一部分),只是文件的路径。

一旦你打开连接,这就是你使用文件名的地方。例如:

OleDbCommand cmd = new OleDbCommand("SELECT * FROM Employees"); 

注意不要添加“.DBF”扩展(它的假设 - 因为事实上,该文件必须具有扩展名为.dbf,否则将不予以确认,至少按照我的经验,阅读)。

编辑

我有过的(每次几百到几千)比我更想与DBF文件的工作的“特权”。如果你仍然有问题留下评论,明天我会在工作时看一看 - 上面的内容大多数都是在我的头顶上,有一点点使用Google。

+0

感谢您的帮助,您能为此发送一个小小的C#示例吗? – Gali

+0

@Gali - 什么样的样本?也就是说,如何去做什么(除了上面的内容,我的意思是)。 – Tim

+0

您好先生,我在阅读dbf文件时遇到不同类型的错误。请检查http://stackoverflow.com/questions/33687000/the-microsoft-jet-database-engine-could-not-find-object –

-1

试试这个:

System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection ("Driver={Microsoft Visual FoxPro Driver}; 
SourceType = DBF; 
SourceDB = " + System.IO.Path.GetFullPath(strFileName).Replace(System.IO.Path.GetFileName(strFileName), "") + ";Exclusive=No");