我的OdbcDataReader.HasRows仅在第一次读取时返回FALSE,但对于所有其他读取返回true。
首先,我将2个ODBC读取器设置为同一个数据库连接。 如果我从第一次阅读中得到了我需要的信息,那么我会去第二个读者并获取更多信息。
OdbcConnection MACMIRROR = new OdbcConnection("DSN=AS400 - Mac-Mirror");
MACMIRROR.Open(); // This line opens MacMirror database
OdbcCommand MMCmd_ConfigCode_SerialNum_PartNum = MACMIRROR.CreateCommand();
// Get Configuration Code, Serial number and Part number command.
OdbcCommand MMCmd_TextualInfo = MACMIRROR.CreateCommand();
// Get Textural information out of MACPAC for specified serial number.
MMCmd_ConfigCode_SerialNum_PartNum.CommandText = "SELECT GSMCFG, GSMSER, GSMPRT FROM GST001PF
WHERE GSMSER='" + Dispenser_SN.Golden_Dispenser_Serial_Number + "'";
MMCmd_TextualInfo.CommandText = "SELECT CXCFGC, CXEXCC FROM EC140M2 WHERE CXCFGC='" +
This_Dispenser.CompleteDispConfigCode + "'";
OdbcDataReader DBReader = MMCmd_ConfigCode_SerialNum_PartNum.ExecuteReader();
OdbcDataReader DBReaderTextInfo = MMCmd_TextualInfo.ExecuteReader();
// Use serial number to get config code.
if (DBReader.Read())
{
This_Dispenser.CompleteDispConfigCode = (DBReader["GSMCFG"].ToString());
This_Dispenser.SetAllParametersFromConfigCode();
//Got good config code, now use config code to get textual information.
if (DBReaderTextInfo.Read())
// Does not read on the first attempt only
// (had rows is false here, but true on 2nd time through code)
{
This_Dispenser.TexturalInformation = (DBReaderTextInfo["CXEXCC"].ToString());
DBReaderTextInfo.Close();
}
}
DBReader.Close();
MACMIRROR.Close(); // Close the MacMirror connection
答案 0 :(得分:1)
我终于解决了这个问题。在创建和使用第一个ODBC阅读器之后,我不得不关闭并处理它。然后创建一个新的ODBC读取器,获取数据,然后关闭并处理(或NULL)该读取器。