【问题标题】:Error in Append From VFP OLEDB in C#在 C# 中从 VFP OLEDB 追加错误
【发布时间】:2015-10-21 05:59:19
【问题描述】:

我尝试使用以下代码将分隔文本附加到 Fox 表中:

OleDbConnection oledbConn = new OleDbConnection(String.Format(@"Provider=VFPOLEDB.1;Data Source={0};Collating Sequence=MACHINE", Inputpath + "UnRepWor.dbf"));
OleDbCommand oledbComm = new OleDbCommand { Connection = oledbConn, CommandType = CommandType.Text };

string insertCammand = String.Format(@"APPEND FROM {0} DELIMITED WITH TAB", @"'d:\TestServiceOutput\data.dat'");
oledbComm.CommandText = insertCammand.Trim();
try
{
   oledbConn.Open();
   oledbComm.ExecuteNonQuery();
}
catch (Exception ex)
{
    throw Utility.GetExceptionDetails(ex, "WordRootFoxExportServiceDataAccessLayer - ImportToFoxTable- insert into Fox Table",ex.Message);
}

并得到这个错误:

Message = "One or more errors occurred during processing of command."
Source  = "Microsoft OLE DB Provider for Visual FoxPro"
ErrorCode = -2147217900
ex.StackTrace :
    at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)    
    at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
    at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)

【问题讨论】:

    标签: c# visual-foxpro


    【解决方案1】:

    虽然您现有的代码有问题,但我不认为 Append from 是通过 VFPOLEDB 直接支持的。相反,您可以这样尝试:

    string vfpScript = string.Format(@"
    use UnRepWor shared
    APPEND FROM ('{0}') DELIMITED WITH TAB
    use", @"d:\TestServiceOutput\data.dat");
    
    using (OleDbConnection oledbConn = new OleDbConnection(String.Format(@"Provider=VFPOLEDB.1;Data Source={0};Collating Sequence=MACHINE", Inputpath)))
    {
      OleDbCommand oledbComm = new OleDbCommand { 
        Connection = oledbConn, 
        CommandType = CommandType.StoredProcedure, 
        CommandText="ExecScript" };
      oledbComm.Parameters.AddWithValue("code", vfpScript);
    
      try
      {
        oledbConn.Open();
        oledbComm.ExecuteNonQuery();
      }
      catch (Exception ex)
      {
         throw Utility.GetExceptionDetails(ex,
           "WordRootFoxExportServiceDataAccessLayer - ImportToFoxTable- insert into Fox Table", 
          ex.Message);
      }
    }
    

    【讨论】:

    • 对不起,我很害怕,虽然它在支持的命令中列出,但它不受 VFPOLEDB 支持。它可以在存储过程中工作。
    • 要解决方法,您可以使用 ACE 或 JET 驱动程序读取制表符分隔的文件并插入到 VFP 表中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多