我正在使用一些方法从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;
}
所以,当我正在调试并且在结束返回之前查看两个DqqTables的内容时,Master表是完美的,并且History表具有来自其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分钟左右,然后再试一次,查询就可以了。我不认为这是相关的,但我也不知道是什么导致它并且愿意。
答案 0 :(得分:1)
如果DaveB的答案没有帮助:如果你完全删除了WHERE子句,那么你会得到一些数据吗?这可能有助于找到问题的原因。