C#DBF错误打开

问题描述 投票:0回答:3

我正在尝试编写一个程序来读取DBF文件并将其放入数据表中。我没有太多的FoxPro数据库工作经验。下面是打开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
c# odbc dbf
3个回答
2
投票

首先,如果您使用的是Foxpro表,我将不使用dBase驱动程序。

Get the Microsoft Visual Foxpro OleDb Provider

第二,查看连接字符串。您不希望连接字符串提及实际的table.dbf,而只是提及数据库文件所在的PATH。然后,您的查询就很简单...

从SomeTable中选择*

此外,还有许多其他与VFP和OleDB相关的问答。如果您专门搜索我的用户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
投票

删除完整路径中的空间和其他unscape。

© www.soinside.com 2019 - 2024. All rights reserved.