نوشته شده توسط
rahmatipoor
یک از راههایی که به ذهن میرسه این هست اینه که یک سری فیلد ثابت اضافی در نظر بگیریم که کاربرها بتونن تغییر نام بدن و اگه نیاز ندارن پنهان بشه که این روش هم کامل نیست.
اگه بشه خود کاربرها هر چی نیاز دارند رو تعریف کنند واقعا عالی میشه
سلام و وقت بخیر.
همونطور که فرمودید این روش گذشته از سرباری که داره محدودیت های مختلفی رو هم به همراه داره و به همین دلیل عملا روش مناسبی نیست.
اگر درست متوجه شده باشم شما قصد ایجاد فرم یا جدول جدید روی پایگاه داده ندارید و فقط باید فیلد جدید به جدول فعلی اضافه بشه درسته؟
در این صورت چرا کد sql رو از سمت نرم افزار به طور داینمیک تولید نمی کنید؟
مثلا می تونید نام فیلد مورد نظر و نوع و سایر مشخصاتش رو از کاربر بگیرید و بسته به اطلاعات ورودی کد sql مرتبط برای ایجاد فیلد خواسته شده رو تولید کنید.
به این صورت تقریبا:
string sql=string.Format(
"ALTER TABLE myTable ADD {0} {1}",
FieldNameTextbox.Text, FieldTypeCombo.SelectedItem);
البته فراموش نکنید که باید برای جلوگیری از injection و تزریق کدهای مخرب هم تدابیری رو در نظر بگیرید.
روش های قوی تر و پیچیده تری هم البته وجود داره. مثلا می تونید یک جدول برای فرم ها داشته باشید، یک جدول برای فیلد ها و یک جدول کلی برای مقادیر.
table forms:
FormID INT IDENTITY, FormName VarChar(50);
table fields:
FieldID int identity, FormID int, FieldName VarChar(20)....
table values:
int ValueID int identity, FieldID int, Value NVarChar(max));