/// <summary>
 /// 填充 UI 字段 txtSql
 /// 如果选中“原始查询”:
 ///   使用相应的查询文本填充字段 txtSql.Text,并添加参数
 /// 否则:
 ///   使用 sql 填充文本字段 txtSql.Text
 /// </summary>
 private void FillSqlText()
 {
     if (this.chkUseOriginal.Checked)
     {
         SqlQueryText qt = this.queryInfos[0];
         if (this.radioQuery2.Checked)
         {
             qt = this.queryInfos[1];
         }
         String s = qt.Text + "\r\n";
         s += "-------------------------------";
         for (int i = 0; i < qt.Params.Length; i++)
         {
             ParameterText param = qt.Params[i];
             if (param.SqlType == "String")
             {
                 s += "\r\n" + param.Name + " [" + param.SqlType + "]: " + Utils.QuoteString(param.Value);
             }
             else
             {
                 s += "\r\n" + param.Name + " [" + param.SqlType + "]: " + param.Value;
             }
         }
         this.txtSql.Text = s;
     }
     else
     {
         this.txtSql.Text = this.currentSql;
     }
 }
Beispiel #2
0
        private static SqlQueryText[] GetFullQueryInfo(DataContext dataContext, IQueryable query)
        {
            System.Data.Common.DbCommand dbCommand = dataContext.GetCommand(query);

            SqlQueryText[] result = new SqlQueryText[1];
            for (int i = 0, n = 1; i < n; i++)
            {
                result[i].Text = dbCommand.CommandText;
                int nParams = dbCommand.Parameters.Count;
                result[i].Params = new ParameterText[nParams];
                for (int j = 0; j < nParams; j++)
                {
                    ParameterText param = new ParameterText();
                    System.Data.Common.DbParameter pInfo = dbCommand.Parameters[j];
                    param.Name    = pInfo.ParameterName;
                    param.SqlType = pInfo.DbType.ToString();
                    object paramValue = pInfo.Value;
                    if (paramValue == null)
                    {
                        param.Value = null;
                    }
                    else
                    {
                        param.Value = pInfo.Value.ToString();
                    }
                    result[i].Params[j] = param;
                }
            }
            return(result);
        }
Beispiel #3
0
        /// <summary>
        /// Преобразование текста SQL-запроса (в котором содержатся имена параметров)
        /// и сведений о параметрах (SqlType и значения, возвращенные методом .ToString())
        /// в одну строку SQL (в которой содержатся текстовые представления значений).
        /// Выполнение этой строки не должно отличаться от выполнения исходного запроса, за исключением
        /// предельных вариантов (например, строка содержит имя параметра или для десятичного числа указана слишком большая точность)
        /// </summary>
        /// <param name="qt">текст запроса и сведения о параметрах</param>
        /// <returns>строка SQL для выполнения</returns>
        internal static string GetQueryTextWithParams(SqlQueryText qt)
        {
            string s = qt.Text;

            for (int i = qt.Params.Length - 1; i >= 0; i--)
            {
                ParameterText param = qt.Params[i];
                string        val;
                switch (param.SqlType.ToString())
                {
                case "String":
                case "Guid":
                case "DateTime":
                    val = QuoteString(param.Value);
                    break;

                case "Boolean":
                    if (param.Value == "True")
                    {
                        val = "1";
                    }
                    else if (param.Value == "False")
                    {
                        val = "0";
                    }
                    else
                    {
                        throw new ArgumentException("Boolean value other than True or False");
                    }
                    break;

                case "Time":
                    TimeSpan ts = TimeSpan.Parse(param.Value);
                    val = ts.Ticks.ToString(CultureInfo.CurrentUICulture);
                    break;

                default:
                    val = param.Value;
                    break;
                }
                s = s.Replace(param.Name, val);
            }
            return(s);
        }
        private static SqlQueryText[] GetFullQueryInfo(DataContext dataContext, IQueryable query)
        {
            System.Data.Common.DbCommand dbCommand = dataContext.GetCommand(query);

            SqlQueryText[] result = new SqlQueryText[1];
            for (int i = 0, n = 1; i < n; i++) {
                result[i].Text = dbCommand.CommandText;
                int nParams = dbCommand.Parameters.Count ;
                result[i].Params = new ParameterText[nParams];
                for (int j = 0; j < nParams; j++) {
                    ParameterText param = new ParameterText();
                    System.Data.Common.DbParameter pInfo = dbCommand.Parameters[j];
                    param.Name = pInfo.ParameterName;
                    param.SqlType = pInfo.DbType.ToString();
                    object paramValue = pInfo.Value;
                    if (paramValue == null) {
                        param.Value = null;
                    } else {
                        param.Value = pInfo.Value.ToString();
                    }
                    result[i].Params[j] = param;
                }
            }
            return result;
        }