2014-02-05 76 views
0

我試圖寫一個程序來讀取一個dbf文件,並把它放到一個數據表。我沒有太多使用FoxPro數據庫的經驗。 下面是打開dbf的函數。我將文件名傳遞給函數。C#DBF錯誤打開

private DataTable loadFile(string FileName) 
{ 
    System.Data.Odbc.OdbcConnection conn = new System.Data.Odbc.OdbcConnection(); 
    conn.ConnectionString = "DRIVER={Microsoft dBase Driver (*.dbf)};Deleted=1"; 
     DataTable dt = new DataTable(); 
    try 
    { 
     conn.Open(); 
     System.Data.Odbc.OdbcCommand comm = new System.Data.Odbc.OdbcCommand(); 
     comm.CommandText = @"SELECT * FROM " + @FileName; 

     comm.Connection = conn; 

     dt.Load(comm.ExecuteReader()); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.ToString()); 
    } 
    finally{ 
     conn.Close(); 
    } 
    return dt; 

} 

的文件名變量是

"C:\\Users\\psun\\Desktop\\New folder\\plog.DBF" 

在運行時我得到這個錯誤

ERROR [42000] [Microsoft][ODBC dBase Driver] Syntax error in FROM clause. 
    at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode) 
    at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader, Object[] methodArguments, SQL_API odbcApiMethod) 
    at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader) 
    at System.Data.Odbc.OdbcCommand.ExecuteReader(CommandBehavior behavior) 
    at System.Data.Odbc.OdbcCommand.ExecuteReader() 
    at UpLoad.Form1.loadExcel(String FileName) in c:\Users\psun\Documents\Visual Studio 2012\Projects\PLOGReader\PLOGReader\Form1.cs:line 60 
+0

不能使用表名的參數。 –

回答

1

首先,如果您正在使用Foxpro表,我不會使用dBase驅動程序。

Get the Microsoft Visual Foxpro OleDb Provider

其次,看看連接字符串。您不希望連接字符串提到實際的table.dbf,而只是數據庫文件所在的路徑。然後,你的查詢都是那樣簡單......

SELECT * FROM SomeTable

此外,還有很多其他Q &與VFP和OLEDB A相關。如果您專門針對我的用戶ID和這些標籤進行了搜索,則會列出我在此專門提供的問題列表。有運行腳本,一個簡單的查詢,使用參數化查詢很多,等

下面是一個例子搜索,你可以放... 用戶:74195 [VFP] [OLEDB]

0

嘗試添加文件名到ODBC連接字符串。

http://www.connectionstrings.com/microsoft-dbase-odbc-driver/

conn.ConnectionString = "DRIVER={Microsoft dBase Driver (*.dbf)};Deleted=1;dbq=C:\\Users\\psun\\Desktop\\New folder\\Plog.DBF"; 

和表名,你可能需要「[schema.tableName]」,這是你的@FileName是現在。例如:

comm.CommandText = @"SELECT * FROM [schema.tableName]"; 
+0

看來你不熟悉的ODBC或OLEDB連接字符串。對於dbf/foxpro文件,連接應該指向文件所在的文件夾。然後,查詢可以從給定文件夾中的任意表(.dbf)或連接的主路徑的子文件夾中進行選擇。 – DRapp