Example #1
0
        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);
                }
            }
        }
Example #2
0
 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);
     }
 }
Example #3
0
 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());
 }