由于对象的当前状态,操作无效.在C#中
发布时间:2020-12-15 07:54:19 所属栏目:百科 来源:网络整理
导读:我创建了这个方法来检查表中这条记录的编号 但是当count(*)的值为0时,它会给我这个错误消息 我用这个库来连接oracle db 使用Oracle.DataAccess.Client; private int checkPort(int portID) { int intCount = 0; try { OracleCommand oraCommand = new Oracle
我创建了这个方法来检查表中这条记录的编号
但是当count(*)的值为0时,它会给我这个错误消息 我用这个库来连接oracle db 使用Oracle.DataAccess.Client; private int checkPort(int portID) { int intCount = 0; try { OracleCommand oraCommand = new OracleCommand(); oraCommand.Connection = new DBManager().getConnection(); oraCommand.CommandText = "select count(*) as num from wireless_port_oid where port_id=:port_id"; oraCommand.Parameters.Add(":port_id",portID); OracleDataReader Reader= oraCommand.ExecuteReader(); return intCount; while (**Reader.Read()**)//it gives exception here //The err Operation is not valid due to the current state of the object. { intCount =Convert.ToInt32(Reader[0]); Reader.Close(); oraCommand.Connection.Close(); oraCommand = null; if (intCount > 0) { return 1; } } Reader.Close(); Reader.Dispose(); oraCommand.Connection.Close(); oraCommand.Connection.Dispose(); oraCommand.Dispose(); return 0; } catch (OracleException exception) { Console.WriteLine(exception.Message); return 0; } } 解决方法
您在Count = 0时关闭读取器,然后尝试在while循环中再次读取它.
while (Reader.Read())//it gives exception here //The err Operation is not valid due to the current state of the object. { intCount =Convert.ToInt32(Reader[0]); Reader.Close(); oraCommand.Connection.Close(); oraCommand = null; if (intCount > 0) { return 1; } // if intCOunt == 0 then what? loop again } 但是你的代码无效 – 我只是注意到你有一个返回intCount;就在您说的行之前有错误.我认为这只是一个错误的例子. 我会重构你的代码以利用C#的using语句: private int checkPort(int portID) { string sql = "select count(*) as num from wireless_port_oid where port_id=:port_id"; int intCount = 0; try { using(OracleCommand oraCommand = new OracleCommand()) { using(oraCommand.Connection = new DBManager().getConnection()) { oraCommand.CommandText = sql; oraCommand.Parameters.Add(":port_id",portID); intCount = oraCommand.ExecuteScalar(); } } } catch (OracleException exception) { Console.WriteLine(exception.Message); // may be you shouldn't return 0 here possibly throw; } return intCount; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |