مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

b-zarinfard

عضویت از 1393/01/01

مقداردهی متغییری که در Parameter تعیین شده

  • دوشنبه 4 تیر 1397
  • 10:35
تشکر میکنم

سلام

کدی دارم که کوئری هایی را از ورودی می گیرد و اجرا می کند. کوئری ها که از ورودی دریافت می شوند دارای پارامترهایی است که در کد برنامه مقداردهی می شوند. به طور مثال 

select * from $MainSchema$.Table1 در کوئری فوق نحوه تعیین مقدار MainSchema در داخل کد تعیین شده است. این پارامتر در کوئری های مختلف متفاوت می باشد. متغییری با نام Parameter در کد تعریف شده که کوئری های فوق را گرفته و parse می کند هر جا با الگویی که تعیین شده برخورد کرد پارامتر فوق را جدا می کند تا مقدار آن را محاسبه کند. 

مشکلی که دارم در نحوه replace کردن پارامتر با مقدار آن است. به طور مثال در کد برای متغییر MainSchema = "test_env" تعیین شده است. حال در زمان pars کوئری مقدار Parameter  = "MainSchema " مشخص شده است. حال که می خواهم در کوئری به جای متغییرMainSchema  مقدار آن یعنی test_env را قرار دهم نمی شود و همان متغییر MainSchema قرار می گیرد.

کد فوق بخشی از کد اصلی می باشد. تابع GetVariable را نمی دانم چکونه پیاده سازی کنم تا مقدار متغییری که در ParamName مشخص شده است را برگرداند.

var Desc = "select * from $MainSchema$.Table1"
var pattern = @"\$\w+/[a-zA-Z0-9_\-\{\}]+\$";
var Params = Regex.Matches(Desc, pattern).Cast<Match>().Select(m => m.Value).ToArray();
foreach (string Param in Params)
                    {
                        var ParamReplace = Param;
                        var ParamType = Param.Replace("$", "").Split('/')[0].ToUpper();
                        var ParamName = Param.Replace("$", "").Split('/')[1];

						ParamValue = GetVariable(ParamName);
                        
                        Desc = Desc.Replace(ParamReplace, ParamValue);
                    }

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 4 تیر 1397
  • 13:18

در کوئری باید برای مقدار یک پارامتر تعریف کنید و سپس توسط SqlCommand مقدار را جایگزین کنید 

سرچ کنید use parameter in sql ado.net

کاربر سایت

b-zarinfard

عضویت از 1393/01/01

  • دوشنبه 4 تیر 1397
  • 13:31

تعریف کردم. همون پارامتر MainSchema که در کوئری وجود داره. از SqlCommand  نمی تونم استفاده کنم چرا که بعد از اصلاح کوئری, اجرای آن توسط یک وب سرویس انجام می شود و خروجی آن در برنامه من نمایش داده می شود.

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 4 تیر 1397
  • 13:35

پارامتر باید در webservice تعریف بشه اگر در شته هست داخل {} قرار دهید و با متد replace جایگرین کنید 

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)