【发布时间】:2017-11-16 13:28:23
【问题描述】:
我有一个数据阅读器得到空结果,但我不明白为什么?
我的连接状态是打开的,我在我的数据库中测试了我的查询,它返回值但是我的 reader.read() 只是被跳过了
OdbcDataReader Reader;
string mond = "select fir_mdnt from safir JOIN safirbpv ON firbpv_fir = fir_fir where firbpv_ibnr = '" + _cb_Compte.SelectedItem + "' group by fir_mdnt;";
OdbcCommand mondant = new OdbcCommand(mond, InfoConnexion);
InfoConnexion.Open();
Reader = mondant.ExecuteReader();
while (Reader.Read())
{
MessageBox.Show(Reader.ToString());
}
InfoConnexion.Close();
【问题讨论】:
-
你是 sql 语句返回行吗?似乎sql查询不返回任何与“_cb_Compte.SelectedItem”匹配的行
-
检查 _cb_Compte.SelectedItem 值,提取选择查询并检查数据库是否返回任何值。这将确认问题是否与 .NET 代码有关,或者数据库中没有具有此类过滤器值的记录。
-
首先,USE PARAMETERISED QUERIES,很抱歉大喊大叫,但这非常重要,不仅是为了安全,而且对于查询计划的重用和防止可能的数据截断和转换错误。您是否尝试过调试以查看该命令发出的确切查询?
-
当我使用逐步调试时,我的查询看起来像这样: select fir_mdnt from safir JOIN safirbpv ON firbpv_fir = fir_fir where firbpv_ibnr = 'CH1200767000A07116162' group by fir_mdnt;当我在我的数据库中尝试它时,它会返回我想要的,一个 int。
-
“跳过”到底是什么意思?
Reader.Read()是否返回 false 或者您的意思是该行甚至从未执行过?如果是后者,那么你抛出了一个你在任何地方都没有捕捉到的异常。
标签: c# sql odbc datareader