public static IDbDataParameter[] GetParameters <TConnection, TCommand>(string procedure, DatabaseAccessAdapter adapter, Action <TCommand> deriveParameters) where TConnection : IDbConnection where TCommand : IDbCommand, new() { using (TConnection connection = (TConnection)adapter.GetConnection()) { using (TCommand cmd = new TCommand()) { cmd.CommandText = procedure; cmd.CommandType = CommandType.StoredProcedure; cmd.Connection = connection; deriveParameters(cmd); // 探测存储过程参数 var args = cmd.Parameters; var buffer = new IDbDataParameter[args.Count]; for (int i = 0; i < args.Count; i++) // 交接且设置默认值 { IDbDataParameter arg = (IDbDataParameter)args[i]; arg.Value = DBNull.Value; buffer[i] = arg; } return(buffer); } } }
public static DataSet FillDataSet(IDbCommand cmd, DatabaseAccessAdapter adapter) { if (cmd == null) { throw new ArgumentNullException("cmd"); } if (adapter == null) { throw new ArgumentNullException("connection"); } cmd.Connection = ConnectConnection(adapter.GetConnection()); { DataSet ds = null; IDbDataAdapter da = adapter.CreateAdapter(); { da.SelectCommand = cmd; ds = new DataSet(); try { da.Fill(ds); } catch { ds.Dispose(); ds = null; } } IDisposable disposable = da as IDisposable; if (disposable != null) { disposable.Dispose(); } return(ds); } }
public static IDataReader ExecuteReader(IDbCommand cmd, DatabaseAccessAdapter adapter) { if (cmd == null) { throw new ArgumentNullException("cmd"); } if (adapter == null) { throw new ArgumentNullException("connection"); } cmd.Connection = ConnectConnection(adapter.GetConnection()); return(cmd.ExecuteReader()); }