4

我正在研究一些从 FoxPro 表中导入数据并将其写入 SQL 表的方法。这只是企业级应用程序的一小部分,坦率地说,其中大部分都超出了我的想象。我遇到问题的方法获取两个 FoxPro 表并将它们放入数据集中。第一张桌子过来没问题,但第二张桌子一直空着。这是我的代码(代码后有更多详细信息):

public DataSet GetFoxProDelinquencyData()
    {
        DataSet bothDlqTables = new DataSet();
        DataSet DlqData;
        string selectQuery = "SELECT * FROM MasterDlqTable";

        try
        {
            DlqData = _foxProServiceAccess.ExecuteFoxProDataSet(selectQuery, 1);
        }
        catch (Exception exceptionToHandle)
        {
            throw ExceptionHelper.HandleFoxProException(exceptionToHandle,
                            "Failed to get data from FoxPro");
        }

        DlqData.Tables[0].TableName = "Master";
        bothDlqTables.Tables.Add(DlqData.Tables[0].Copy());
        string delqnum = Convert.ToString(bothDlqTables.Tables[0].Rows[0]["delqnum"]);
        selectQuery = String.Format("SELECT * FROM rvdlqhst_txps WHERE delqnum = '{0}'", delqnum);

        try
        {
            DlqData = _foxProServiceAccess.ExecuteFoxProDataSet(selectQuery, 1);
        }
        catch (Exception exceptionToHandle)
        {
            throw ExceptionHelper.HandleFoxProException(exceptionToHandle,
                            "Failed to get data from FoxPro");
        }

        DlqData.Tables[0].TableName = "History";
        bothDlqTables.Tables.Add(DlqData.Tables[0].Copy());
        return bothDlqTables;
    }

因此,当我在调试时,我在最后返回之前查看了两个 DlqTables 的内容,主表是完美的,历史表具有来自 FoxPro 等效项的正确列,但它没有数据。与 DlqData 数据集相同。delqnum 字符串包含 000210,我们的 dB 人员确认 FoxPro 表肯定包含具有该拖欠编号的记录。当他跑

SELECT * FROM rvdlqhst_txps WHERE delqnum = '000210'

从数据库查看器中,他得到了结果。我尝试将该 SELECT 语句硬编码为字符串而不是 string.format 命令,但我仍然得到相同的空表。有什么建议么?

更新:我在第一次查询时也遇到间歇性错误:

无法连接到 net.tcp://rdsfoxproqa.alatax.com/FoxProService_Dist。连接尝试持续了 00:00:01.0625340 的时间跨度。TCP 错误代码 10061:无法建立连接,因为目标机器主动拒绝了它 172.19.0.105:808。

它不时发生,通常我可以等待 30 分钟左右,然后再试一次,查询就会起作用。我不认为这是相关的,但我也不知道是什么原因造成的并且很想这样做。

4

1 回答 1

1

如果 DaveB 的回答没有帮助:如果你完全删除 WHERE 子句,你会得到一些数据吗?这可能有助于找到问题的原因。

于 2012-08-10T08:30:13.997 回答