private static STATUSDUPLICATACollection ExecuteReader(ref STATUSDUPLICATACollection collection, ref FbDataReader dataReader, FbCommand dbCommand) { using (dataReader = dbCommand.ExecuteReader()) { collection = new STATUSDUPLICATACollection(); if (dataReader.HasRows) { while (dataReader.Read()) { collection.Add(FillEntityObject(ref dataReader)); } } if (!(dataReader.IsClosed)) { dataReader.Close(); } dataReader.Dispose(); } return collection; }
public STATUSDUPLICATACollection ReadCollectionByParameter(List<RowsFiltro> RowsFiltro, string FieldOrder) { FbDataReader dataReader = null; STATUSDUPLICATACollection collection = null; string strSqlCommand = String.Empty; try { if (RowsFiltro != null) { if (RowsFiltro.Count > 0) { strSqlCommand = "SELECT * FROM STATUSDUPLICATA WHERE ("; ArrayList _rowsFiltro = new ArrayList(); RowsFiltro.ForEach(delegate(RowsFiltro i) { string[] item = { i.Condicao.ToString(), i.Campo.ToString(), i.Tipo.ToString(), i.Operador.ToString(), i.Valor.ToString() }; _rowsFiltro.Add(item); }); int _count = 1; foreach (string[] item in _rowsFiltro) { strSqlCommand += "(" + item[1] + " " + item[3]; switch (item[2]) { case ("System.String"): if(item[3].ToUpper() != "LIKE") strSqlCommand += " '" + item[4] + "')"; else strSqlCommand += " '%" + item[4] + "%')"; break; case ("System.Int16"): if (item[3].ToUpper() != "LIKE") strSqlCommand += " " + item[4] + ")"; else strSqlCommand += " '%" + item[4] + "%')"; break; case ("System.Int32"): if (item[3].ToUpper() != "LIKE") strSqlCommand += " " + item[4] + ")"; else strSqlCommand += " '%" + item[4] + "%')"; break; case ("System.Int64"): if (item[3].ToUpper() != "LIKE") strSqlCommand += " " + item[4] + ")"; else strSqlCommand += " '%" + item[4] + "%')"; break; case ("System.Double"): if (item[3].ToUpper() != "LIKE") strSqlCommand += " " + item[4] + ")"; else strSqlCommand += " '%" + item[4] + "%')"; break; case ("System.Decimal"): if (item[3].ToUpper() != "LIKE") strSqlCommand += " " + item[4] + ")"; else strSqlCommand += " '%" + item[4] + "%')"; break; case ("System.Float"): if (item[3].ToUpper() != "LIKE") strSqlCommand += " " + item[4] + ")"; else strSqlCommand += " '%" + item[4] + "%')"; break; case ("System.Byte"): strSqlCommand += " " + item[4] + ")"; break; case ("System.SByte"): strSqlCommand += " " + item[4] + ")"; break; case ("System.Char"): if (item[3].ToUpper() != "LIKE") strSqlCommand += " '" + item[4] + "')"; else strSqlCommand += " '%" + item[4] + "%')"; break; case ("System.DateTime"): if (item[3].ToUpper() != "LIKE") strSqlCommand += " '" + item[4] + "')"; else strSqlCommand += " '%" + item[4] + "%')"; break; case ("System.Guid"): if (item[3].ToUpper() != "LIKE") strSqlCommand += " '" + item[4] + "')"; else strSqlCommand += " '%" + item[4] + "%')"; break; case ("System.Boolean"): strSqlCommand += " " + item[4] + ")"; break; } if (_rowsFiltro.Count > 1) { if (_count < _rowsFiltro.Count) { strSqlCommand += " " + item[0] + " "; } _count++; } } strSqlCommand += ") order by " + FieldOrder; } else { strSqlCommand = "SELECT * FROM STATUSDUPLICATA order by " + FieldOrder; } } else { strSqlCommand = "SELECT * FROM STATUSDUPLICATA order by " + FieldOrder; } //Verificando a existência de um transação if (dbTransaction != null) { if (dbCnn.State == ConnectionState.Closed) dbCnn.Open(); dbCommand = new FbCommand(strSqlCommand, dbCnn); dbCommand.CommandType = CommandType.Text; dbCommand.Transaction = ((FbTransaction)(dbTransaction)); } else { if(dbCnn == null) dbCnn = new FbConnection(connectionString); if (dbCnn.State == ConnectionState.Closed) dbCnn.Open(); dbCommand = new FbCommand(strSqlCommand, dbCnn); dbCommand.CommandType = CommandType.Text; dbCommand.Transaction = dbCnn.BeginTransaction(IsolationLevel.ReadCommitted); } collection = ExecuteReader(ref collection, ref dataReader, dbCommand); if(dataReader != null) { dataReader.Close(); dataReader.Dispose(); } if (dbTransaction == null) { dbCommand.Transaction.Commit(); dbCnn.Close(); } return collection; } catch (Exception ex) { // Deleta reader if (dataReader != null) { dataReader.Close(); dataReader.Dispose(); } if (dbTransaction != null) this.RollbackTransaction(); else { if (dbCommand.Transaction != null) dbCommand.Transaction.Rollback(); if (dbCnn.State == ConnectionState.Open) dbCnn.Close(); } throw ex; } }