public PropertyDescriptorParam(DbCommandParam p)
     : base(p.Name, new Attribute[] {
     new WebServerMemberAttribute(),
     new ReadOnlyInProgrammingAttribute(),
     new DescriptionAttribute("Output parameter")
 })
 {
     _param = p;
 }
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            int n = listBox1.SelectedIndex;

            if (n >= 0)
            {
                DbCommandParam p = listBox1.Items[n] as DbCommandParam;
                if (p != null)
                {
                    propertyGrid1.SelectedObject = p;
                }
            }
        }
 public DbParameterList(ParameterList parameters)
 {
     _ps = parameters;
     if (_ps != null)
     {
         _pp = new DbCommandParam[_ps.Count];
         for (int i = 0; i < _ps.Count; i++)
         {
             _pp[i] = new DbCommandParam(_ps[i]);
         }
     }
     else
     {
         _ps = new ParameterList();
     }
 }
        private void btNew_Click(object sender, EventArgs e)
        {
            int    n  = 1;
            string nm = "@p1";

            while (true)
            {
                bool bFound = false;
                for (int i = 0; i < listBox1.Items.Count; i++)
                {
                    DbCommandParam p = listBox1.Items[i] as DbCommandParam;
                    if (p != null)
                    {
                        if (string.Compare(nm, p.Name, StringComparison.OrdinalIgnoreCase) == 0)
                        {
                            bFound = true;
                            break;
                        }
                    }
                }
                if (bFound)
                {
                    n++;
                    nm = string.Format(CultureInfo.InvariantCulture, "@p{0}", n);
                }
                else
                {
                    break;
                }
            }
            DbCommandParam pNew = new DbCommandParam(new EPField());

            pNew.Name = nm;
            if (Results == null)
            {
                Results = new DbParameterListExt();
            }
            Results.Add(pNew);
            pNew.AfterNameChange += DialogCommandParameters_AfterNameChange;
            n = listBox1.Items.Add(pNew);
            listBox1.SelectedIndex = n;
        }
 void DatabaseExecuter_DataSizeChange(object sender, EventArgs e)
 {
     if (_plist != null && _dataSizes != null)
     {
         DbCommandParam dp = sender as DbCommandParam;
         if (dp != null)
         {
             for (int i = 0; i < _plist.Count; i++)
             {
                 if (string.CompareOrdinal(dp.Name, _plist[i].Name) == 0)
                 {
                     if (i < _dataSizes.Length)
                     {
                         _dataSizes[i] = dp.DataSize;
                     }
                     break;
                 }
             }
         }
     }
 }
 public void Add(DbCommandParam p)
 {
     if (p != null)
     {
         if (_ps == null)
         {
             _ps = new ParameterList();
         }
         _ps.Add(p.Field);
         if (_pp == null)
         {
             _pp = new DbCommandParam[] { p };
         }
         else
         {
             DbCommandParam[] pp = new DbCommandParam[_pp.Length + 1];
             _pp.CopyTo(pp, 0);
             pp[_pp.Length] = p;
             _pp            = pp;
         }
         OnAddedParameter(p);
     }
 }
        public void CreateActionPhpScript(string objectName, string methodName, StringCollection code, StringCollection parameters, string returnReceiver)
        {
            string connName = GetConnectionCodeName();

            if (string.CompareOrdinal(methodName, "ExecuteWithParameterValues") == 0)
            {
                if (_sql != null && connect != null)
                {
                    code.Add("$GLOBALS[\"debugError\"] = '';\r\n");
                    code.Add("$msql = new JsonSourceMySql();\r\n");
                    code.Add(string.Format(CultureInfo.InvariantCulture, "$msql->SetCredential($this->{0});\r\n", connName));
                    code.Add("$msql->SetDebug($this->DEBUG);\r\n");
                    //
                    string        sql;
                    string[]      sqlParams;
                    List <string> inputParams  = new List <string>();
                    List <string> outputParams = new List <string>();
                    if (this.IsStoredProc)
                    {
                        StringBuilder sb = new StringBuilder();
                        sb.Append("call ");
                        sb.Append(_sql.SQL);
                        sb.Append("(");
                        DatabaseExecuter de = this as DatabaseExecuter;
                        DbParameterList  ps = de.Parameters;
                        if (ps != null && ps.Count > 0)
                        {
                            ParameterDirection[] pds = de.Param_Directions;
                            for (int i = 0; i < ps.Count; i++)
                            {
                                if (i > 0)
                                {
                                    sb.Append(",");
                                }
                                ParameterDirection pd = ParameterDirection.Input;
                                if (pds != null && pds.Length > i)
                                {
                                    pd = pds[i];
                                }
                                switch (pd)
                                {
                                case ParameterDirection.Input:
                                    inputParams.Add(ps[i].Name);
                                    sb.Append(" ? ");
                                    break;

                                case ParameterDirection.InputOutput:
                                    outputParams.Add(ps[i].Name);
                                    sb.Append(string.Format(CultureInfo.InvariantCulture, " @{0} ", ps[i].Name));
                                    break;

                                case ParameterDirection.Output:
                                    outputParams.Add(ps[i].Name);
                                    sb.Append(string.Format(CultureInfo.InvariantCulture, " @{0} ", ps[i].Name));
                                    break;
                                }
                            }
                            sqlParams = inputParams.ToArray();
                        }
                        else
                        {
                            sqlParams = new string[] { };
                        }
                        sb.Append(")");
                        sql = sb.ToString();
                    }
                    else
                    {
                        sql       = _sql.SQL;
                        sqlParams = EasyQuery.GetParameterNames(sql, connect.NameDelimiterBegin, connect.NameDelimiterEnd);
                        if (sqlParams != null)
                        {
                            for (int i = 0; i < sqlParams.Length; i++)
                            {
                                sql = sql.Replace(sqlParams[i], "?");
                            }
                        }
                    }
                    code.Add(string.Format(CultureInfo.InvariantCulture, "$sql = \"{0} \";\r\n", sql));
                    code.Add("$ps = array();\r\n");
                    if (this.Parameters != null)
                    {
                        for (int i = 0; i < sqlParams.Length; i++)
                        {
                            int k = this.Parameters.GetIndex(sqlParams[i]);
                            if (k < 0)
                            {
                                throw new ExceptionLimnorDatabase("Query Parameter [{0}] not found", sqlParams[i]);
                            }
                            DbCommandParam dp = this.Parameters[k];
                            code.Add("$p = new SqlClientParameter();\r\n");
                            code.Add(string.Format(CultureInfo.InvariantCulture, "$p->name = '{0}';\r\n", dp.Name));
                            code.Add(string.Format(CultureInfo.InvariantCulture, "$p->type = '{0}';\r\n", ValueConvertor.OleDbTypeToPhpMySqlType(dp.Type)));
                            code.Add(string.Format(CultureInfo.InvariantCulture, "$p->value = {0};\r\n", parameters[k]));
                            code.Add("$ps[] = $p;\r\n//\r\n");
                        }
                    }
                    if (outputParams.Count > 0)
                    {
                        StringBuilder sb2 = new StringBuilder();
                        sb2.Append("SELECT ");
                        for (int i = 0; i < outputParams.Count; i++)
                        {
                            if (i > 0)
                            {
                                sb2.Append(",");
                            }
                            sb2.Append(string.Format(CultureInfo.InvariantCulture, "@{0} AS {0} ", outputParams[i]));
                        }
                        string s2 = string.Format(CultureInfo.InvariantCulture, "$qry{0}", Guid.NewGuid().GetHashCode().ToString("x", CultureInfo.InvariantCulture));
                        code.Add(string.Format(CultureInfo.InvariantCulture, "{0} = \"{1}\";\r\n", s2, sb2.ToString()));
                        code.Add(string.Format(CultureInfo.InvariantCulture, "$this->{0}->ExecuteWithOutputs($sql,{1},$ps,$msql);\r\n", this.Site.Name, s2));
                        for (int i = 0; i < outputParams.Count; i++)
                        {
                            code.Add(string.Format(CultureInfo.InvariantCulture, "$this->{0}->{1}=$this->{0}->outputValues['{1}'];\r\n", this.Site.Name, outputParams[i]));
                        }
                    }
                    else
                    {
                        code.Add(string.Format(CultureInfo.InvariantCulture, "$this->{0}->ExecuteNonQuery($sql,$ps,$msql);\r\n", this.Site.Name));
                    }
                    if (!string.IsNullOrEmpty(returnReceiver))
                    {
                        code.Add(string.Format(CultureInfo.InvariantCulture,
                                               "{0}=$this->{1}->errorMessage;\r\n", returnReceiver, this.Site.Name));
                    }
                    code.Add(string.Format(CultureInfo.InvariantCulture, "$this->SetServerComponentName('{0}');\r\n", this.Site.Name));
                }
            }
        }
 protected override void OnAddedParameter(DbCommandParam p)
 {
     p.CanChangeName     = true;
     p.BeforeNameChange += DbParameterListExt_BeforeNameChange;
 }
 public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
 {
     if (value is string)
     {
         string data = value as string;
         if (!string.IsNullOrEmpty(data))
         {
             string[]           ss = data.Split('|');
             DbParameterListExt ps = new DbParameterListExt();
             for (int i = 0; i < ss.Length; i++)
             {
                 if (!string.IsNullOrEmpty(ss[i]))
                 {
                     string[] ss2 = ss[i].Split(';');
                     if (ss2.Length > 1)
                     {
                         EPField        f = new EPField();
                         DbCommandParam p = new DbCommandParam(f);
                         if (!string.IsNullOrEmpty(ss2[0]))
                         {
                             if (!ss2[0].StartsWith("@", StringComparison.Ordinal))
                             {
                                 f.Name = string.Format(CultureInfo.InvariantCulture, "@{0}", ss2[0]);
                             }
                             else
                             {
                                 f.Name = ss2[0];
                             }
                             if (!string.IsNullOrEmpty(ss2[1]))
                             {
                                 f.OleDbType = (OleDbType)Enum.Parse(typeof(OleDbType), ss2[1]);
                                 if (ss2.Length > 2)
                                 {
                                     int n;
                                     if (int.TryParse(ss2[2], out n))
                                     {
                                         f.DataSize = n;
                                     }
                                     if (ss2.Length > 3)
                                     {
                                         p.Direction = (ParameterDirection)Enum.Parse(typeof(ParameterDirection), ss2[3]);
                                         if (ss2.Length > 4)
                                         {
                                             f.SetValue(ss2[4]);
                                         }
                                     }
                                 }
                                 ps.Add(p);
                             }
                         }
                     }
                 }
             }
             return(ps);
         }
         else
         {
             return(new DbParameterListExt());
         }
     }
     return(base.ConvertFrom(context, culture, value));
 }
 public PropertyDescriptorDbParam(string name, Attribute[] attrs, DbCommandParam parameter)
     : base(name, attrs)
 {
     _param = parameter;
 }
 protected virtual void OnAddedParameter(DbCommandParam p)
 {
 }
 public PropertyDescriptorValue(string name, Attribute[] attrs, Type type, DbCommandParam owner)
     : base(name, attrs)
 {
     _type  = type;
     _owner = owner;
 }