我正在尝试编写一个程序来读取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
首先,如果您使用的是Foxpro表,我将不使用dBase驱动程序。
Get the Microsoft Visual Foxpro OleDb Provider
第二,查看连接字符串。您不希望连接字符串提及实际的table.dbf,而只是提及数据库文件所在的PATH。然后,您的查询就很简单...
从SomeTable中选择*
此外,还有许多其他与VFP和OleDB相关的问答。如果您专门搜索我的用户ID和这些标签,则会在这里获得我专门提供的问题列表。运行脚本,简单查询,使用参数化查询等都有很多]
这里是您可以输入的示例搜索...用户:74195 [vfp] [oledb]
尝试将文件名添加到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]";
删除完整路径中的空间和其他unscape。