public WayDataSet SelectDataSet(string sql, params object[] parames) { bool needToClose = false; if (this.Connection.State != System.Data.ConnectionState.Open) { needToClose = true; this.Connection.Open(); } try { using (var command = this.CreateCommand(sql, parames)) { var dataset = new WayDataSet(); using (var datareader = command.ExecuteReader()) { do { if (datareader.HasRows) { var datatable = new WayDataTable(); for (int i = 0; i < datareader.FieldCount; i++) { string name = datareader.GetName(i); datatable.Columns.Add(new WayDataColumn(name, datareader.GetFieldType(i).FullName)); } dataset.Tables.Add(datatable); while (datareader.Read()) { var row = new WayDataRow(); datatable.Rows.Add(row); for (int i = 0; i < datareader.FieldCount; i++) { string name = datareader.GetName(i); row[name] = datareader[i]; } } } }while (datareader.NextResult()); } return(dataset); } } catch { throw; } finally { if (needToClose) { this.Connection.Close(); } } }
public void ExecuteReader(Func <System.Data.IDataReader, bool> func, string sql, params object[] parames) { bool needToClose = false; if (this.Connection.State != System.Data.ConnectionState.Open) { needToClose = true; this.Connection.Open(); } try { using (var command = this.CreateCommand(sql, parames)) { var dataset = new WayDataSet(); using (var datareader = command.ExecuteReader()) { while (datareader.Read()) { if (func(datareader) == false) { break; } } } } } catch { throw; } finally { if (needToClose) { this.Connection.Close(); } } }