我正在尝试编写一个程序来读取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
答案 0 :(得分:2)
首先,如果你正在使用Foxpro表,我不会使用dBase驱动程序。
Get the Microsoft Visual Foxpro OleDb Provider
其次,查看连接字符串。您不希望连接字符串提及实际的table.dbf,而只是提到数据库文件所在的PATH。然后,您的查询就像......一样简单。
从SomeTable中选择*
此外,还有很多其他Q& A与VFP和OleDB相关联。如果您专门针对我的用户ID和这些标签进行搜索,您将获得我在此处明确提出的问题列表。有很多来自运行脚本,简单查询,使用参数化查询等等。
以下是您可以放入的示例搜索... 用户:74195 [VFP] [OLEDB]
答案 1 :(得分: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]";
答案 2 :(得分:0)
以完整路径和其他unscape方式删除空间。