2 ضمیمه
مشکل ست کردن نام database به صورت متغیر
عرض سلام خدمت استادهای عزیز.
دوستان من در سی شارپ کانکشن استرینگ رو ست میکنم ولی هرکاری میکنم که اسم دیتا بیس رو به صورت متغیر بذارم نمیشه و جدول داخل دیتابیس رو نمیاره در صورتی که اگه همون اسم دیتابیس رو به صورت دستی در طول رشته قرار بدم درست کار میکنه.
ضمیمه 150083
ضمیمه 150084
نقل قول: مشکل ست کردن نام دیتابیس به صورت متغیر
کلا روش کاریتون اشتباهه ، کانکشن استرینگ رو باید در وب کانفیگ ست کنید .
اما اینکه اینجا چرا جواب گو نیست کمی تامل برانگیزه ! چون روش کار درسته استاندارد نیست ولی نباید مشکلی هم داشته باشه ، حالا به جای استفاده از روش $ که استفاده کردید که من برای اولین بار دیدم واتفاقا خیلی هم سینتکس زیبایی داره ، از روش سنتی زیر استفاده کنید :
datastring =""+ serverid+""+dbname
نقل قول: مشکل ست کردن نام دیتابیس به صورت متغیر
متدها رو static کنید ببینید مشکلتون حل میشه ؟
نقل قول: مشکل ست کردن نام database به صورت متغیر
نقل قول:
نوشته شده توسط
mrzirak
عرض سلام خدمت استادهای عزیز.
دوستان من در سی شارپ کانکشن استرینگ رو ست میکنم ولی هرکاری میکنم که اسم دیتا بیس رو به صورت متغیر بذارم نمیشه و جدول داخل دیتابیس رو نمیاره در صورتی که اگه همون اسم دیتابیس رو به صورت دستی در طول رشته قرار بدم درست کار میکنه.
ضمیمه 150083
ضمیمه 150084
وقتی در زمان تعریف متغییر نام دیتابیس که به صورت استاتیک تعریف کردید مقدار دهی اولیه نکردید CLR مقدار خالی در رشته قرار میده! (قوانین تعریف متغییر در حافظه هیپ)
که البته بهتره که حتما یک مقدار پیش فرض برای این متغییرها در سازنده کلاس تعریف ویا در همان قسمت تعریف متغییر ویا دریک بلاک استاتیک مقدار دهی اولیه انجام بدید!
بنابراین در چه زمانی مقدار نام دیتابیس را ست میکنید؟
بهتر هست که property را هم استاتیک تعریف کنید و قبل از فراخوانی رشته کانکشن استرینگ حتما مقدار نام دیتابیس را ست کنید.
نقل قول: مشکل ست کردن نام database به صورت متغیر
نقل قول:
نوشته شده توسط
farhad_shiri_ex
وقتی در زمان تعریف متغییر نام دیتابیس که به صورت استاتیک تعریف کردید مقدار دهی اولیه نکردید CLR مقدار خالی در رشته قرار میده! (قوانین تعریف متغییر در حافظه هیپ)
که البته بهتره که حتما یک مقدار پیش فرض برای این متغییرها در سازنده کلاس تعریف ویا در همان قسمت تعریف متغییر ویا دریک بلاک استاتیک مقدار دهی اولیه انجام بدید!
بنابراین در چه زمانی مقدار نام دیتابیس را ست میکنید؟
بهتر هست که property را هم استاتیک تعریف کنید و قبل از فراخوانی رشته کانکشن استرینگ حتما مقدار نام دیتابیس را ست کنید.
ممنون از وقتتون
همین کار ها رو هم کردم و دقیقا با لود شدن فرم متغیر ها مقدار دهی میشن و باید اصولا مشکلی نداشته باشه که در اصل کار نمیکنه.
برای اینکه مطمئن بشم که هربار متغیر ها مقدار دهی میشن از حالت دیباگ و با یک مسیج باکس هم حتی امتحان کردم و متغیر ها به صورت صحیح مقدار دهی میشن ولی بازم به مشکل میخوره.
مگه اگه پراپرتی رو استاتیک قرار بدم میتونه متغیر های دیگه رو فراخوانی یا مقداردهی کنه؟(خودش به صورت مستقیم مقدار دهی میشه که )
نقل قول: مشکل ست کردن نام database به صورت متغیر
kala نام دیتابیس هست یا نام جدول ؟
نقل قول: مشکل ست کردن نام database به صورت متغیر
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
kala نام دیتابیس هست یا نام جدول ؟
نام جدولی که در دیتابیس هستش
نقل قول: مشکل ست کردن نام database به صورت متغیر
نقل قول:
نوشته شده توسط
mrzirak
نام جدولی که در دیتابیس هستش
خب الان چه ربطی به نام دیتابیس داره؟ !!
اگه به دیتابیس متصل میشید پس مشکل از نام دیتابیس نیست. با ado.netکد میزنید؟ روی متد Open کانکشن خطایی ندارید؟
نام جدولتون رو دوباره چک کنید. یا در صورت امکان کد اون قسمتی که خطا ظاهر میشه رو اینجا بنویسید ببینیم چی نوشتید.
نقل قول: مشکل ست کردن نام database به صورت متغیر
نقل قول:
نوشته شده توسط
رامین مرادی
خب الان چه ربطی به نام دیتابیس داره؟ !!
اگه به دیتابیس متصل میشید پس مشکل از نام دیتابیس نیست. با ado.netکد میزنید؟ روی متد Open کانکشن خطایی ندارید؟
نام جدولتون رو دوباره چک کنید. یا در صورت امکان کد اون قسمتی که خطا ظاهر میشه رو اینجا بنویسید ببینیم چی نوشتید.
ببین استاد عزیز منم دقیق منظورم همینه که چرا وقتی دستی نام دیتابیس رو وارد میکنم مشکلی نداره ولی وقتی به صورت متغیر وارد میکنم جدول رو نمیاره! بله با ado.net کد میزنم و روی open connection مشکل ندارم!
نقل قول: مشکل ست کردن نام database به صورت متغیر
دوست عزیز مستحضر هستی که وقتی داری نام دیتابیس رو بصورت متغیر وارد میکنی باید دیتابیس با همون نام ساخته شده باشه؟ اون اروری که در پست اول عکسش رو گذاشتی یعنی اینکه همچین جدولی در دیتابیس وجود نداره، پس به دیتابیست وصل شده اما همچین جدولی رو پیدا نمیکنه، شما ببین دیتابیست کامل ساخته شده؟
نقل قول: مشکل ست کردن نام database به صورت متغیر
public class DataAccess
{
public static string AddressIP { get; set; }
public static string DBName { get; set; }
public SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(GetConnectionString());
private static string GetConnectionString()
{
return $"Server={AddressIP};Integrated Security=SSPI;Initial Catalog={DBName}";
}
}
استفاده :
DataAccess.DBName = "Library";
DataAccess.AddressIP = @".\SqlExpress";
DataAccess da = new DataAccess();
SqlConnection sqlConnection = new SqlConnection(da.builder.ConnectionString);
نقل قول: مشکل ست کردن نام database به صورت متغیر
استادای عزیز مشکل رو پیدا کردم که چرا کار نمیکنه!
وقتی DataString رو ست میکنم که serverIp و دیتابیس رو از روی متغیر بخونه فقط لحظه ی لود شدن برنامه متغیر های خالی رو میخونه بعد که متغیر ها رو برابر رشته قرار دادم و DataString رو فراخوانی کردم همون مقدار اولیه که متغیر ها خالی بودن رو برمیگردونه دیگه از روی دو متغیر serverIp و DatabaseName که دوباره مقدار داخلی آنها در حالت runtimeعوض شده فراخوانی نمیشه. ( لطفا این موضوع رو راهنمایی کنید )
قابل ذکر است این متغیر ها همه در گلوبال می باشند.
نقل قول: مشکل ست کردن نام database به صورت متغیر
چند تا راه دارید
DataString را یا بصورت پراپرتی درش بیارید یا به متد تبدیل کنید. یا یک رویداد که با تغییر ip و نام دیتابیس، مقدار DataString را اصلاح کند.