C# 使用C将FoxPro表导入SQL-一个表有效,一个表无效

C# 使用C将FoxPro表导入SQL-一个表有效,一个表无效,c#,sql,foxpro,C#,Sql,Foxpro,我正在使用一些方法从FoxPro表导入数据并将其写入SQL表。这只是企业级应用程序的一小部分,坦率地说,大部分内容我都不懂。我遇到问题的方法是获取两个FoxPro表并将它们放入数据集中。第一张桌子没问题,但第二张桌子一直空着。以下是我的代码代码代码之后的更多详细信息: public DataSet GetFoxProDelinquencyData() { DataSet bothDlqTables = new DataSet(); DataSet DlqD

我正在使用一些方法从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;
    }
因此,当我在调试时,在最后返回之前查看两个hdlqtables的内容时,主表是完美的,历史表具有与FoxPro等价的正确列,但它没有数据。与DlqData数据集相同。delqnum字符串包含000210,我们的dB guy确认FoxPro表肯定包含具有该拖欠数字的记录。当他跑的时候

SELECT * FROM rvdlqhst_txps WHERE delqnum = '000210'
他从数据库查看器中获得结果。我尝试将SELECT语句编码为字符串,而不是string.format命令,但仍然得到相同的空表。有什么建议吗

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

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


这种情况时有发生,通常我可以等30分钟左右,然后再试一次,查询就可以了。我不认为这有什么关系,但我也不知道是什么原因造成的,我很想知道。

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

在第一次复制操作后,您是否尝试过从delqnum中删除任何可能的多余空格?您可能会发现其中的值类似于“000210”,这会让您头疼……我处于调试模式,因此可以看到字符串的确切内容,它是000210。有一段时间,我认为它可能是历史表中的另一种数据类型,因此我需要删除前导零,但后来我在数据库查看器中确认该列是VARCHAR类型,所有值都是6位数字,前导零为2-3。但是谢谢你的建议,我真的很感激能得到的任何帮助!好的…然后这里是另一个黑暗中的镜头…尝试将第二个SELECT语句中的分隔符从{0}更改为{0},看看这是否会有所不同…很久以前在FoxPro中使用过,这可能会有所帮助..?尝试更改为{0}嗯,实际上是\{0}\当然,但它不起作用。好球!哇,我想我们肯定会从警卫那里溜过去的:接下来我想到的是FoxPro端的某种填充或编码问题……你能从你的表中发布该字段的确切声明吗?我在寻找delqnum字段是否有一些不寻常的编码或强制最小长度,或者???与之相关的。。。您的_foxProServiceAccess层是否支持参数化查询,以便您可以重写查询并完全删除字符串文本部分?如果我完全删除WHERE子句,请求将在10分钟后超时。如果我将语句更改为选择*。。。其中delqnum>000209,我得到一个表,其中每个元组的delqnum都是“000211”,这对我来说毫无意义。