PDA

View Full Version : سوال: سوالی متفاوت در مورد کانکشن استرینگ app.config



ahnsolution
جمعه 22 شهریور 1387, 15:36 عصر
سلام دوستان
من یه برنامه دارم که کانکشن استرینگ رو از app.config میخونه .

یک فایل dll دارم که میخام اون هم از این کانکشن بخونه. لطفا با کد و توضیحات بگین چکار باید بکنم.

ممنونم از توجهتون

ahnsolution
جمعه 22 شهریور 1387, 18:21 عصر
لطفا یکی راهنمایی کنه

ممنونم

Sajjad.Aghapour
جمعه 22 شهریور 1387, 19:12 عصر
خوب وقتی در app.Config کانکشنت رو اضافه کردی می تونی هرجایی از اون استفاده کنی.


string cs = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;

black2
جمعه 22 شهریور 1387, 23:15 عصر
من یه برنامه دارم که کانکشن استرینگ رو از app.config میخونه .



چطور میشه کانکشن استرینگ رو در app.config قرار داد؟ ممنون

Sajjad.Aghapour
جمعه 22 شهریور 1387, 23:43 عصر
چطور میشه کانکشن استرینگ رو در app.config قرار داد؟ ممنون

یه Application Configuration File به پروژه اضافه کن.....
اینم کل کدهای موجود در اون....


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="conn" connectionString="server=(local);database=pubs;integrated security=true"/>
</connectionStrings>
</configuration>

yasercomeng
شنبه 23 شهریور 1387, 02:44 صبح
البته با اين كار هم مي توني اين كارو انجام بدي من زياد از اون تگي كه خود .net ميسازه خوشم نمي ياد بعضي موقع اصلاً نتيجه رو درست نشون نميده.اصلاً
فقط به بخش <appSettings> نگاه كن اون كده كه جديده.
اين تگ براي اظافه كردن اطلاعات هست :

<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="sepanta.Properties.Settings.myConnectionString"
connectionString="your connection string"
providerName="your data provider" />
</connectionStrings>
<appSettings>
<add key="ConnectionString" value="your connection string "/>
</appSettings>
</configuration>و اين كد هم براي خوندن اون اطلاعات:

MySqlConnection Connection = new MySqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
و در نهايت اين كد هم براي تغيير اطلاعات:

XmlDocument MyDoc = new XmlDocument();
MyDoc.Load(Assembly.GetExecutingAssembly().Locatio n + ".config");

try
{
XmlElement TempNode = MyDoc.SelectSingleNode("configuration//appSettings//add") as XmlElement;
if (TempNode != null)
TempNode.SetAttribute("value", "new value");
}
catch (XmlException)
{
// Handle parse error here
}
MyDoc.Save(Assembly.GetExecutingAssembly().Locatio n + ".config");
البته اون مسير كلاس Assembly رو يه كمي بايد دستكاريش كني تا به فايل app.config برسي خود اين مسير به فايل yourprojectname.exe.config دسترسي پيدا مي كنه.
موفق باشيد:چشمک:


همه چيز اگر تيره تر مي نمايد روشن مي شود زود
تنها اين حقيقتي است باراني بايد تا رنگين كماني برآيد.

ahnsolution
شنبه 23 شهریور 1387, 08:00 صبح
متشکرم از دوستانی که جواب دادن. منظور من اینها نبود.

من یک پراجکت دارم باهاش کار میکنم و توشم دیتاست دارم. بعد یه Add New Project میکنم یه کلاس Library رو که فایل dll بشه.

حالا در این پراجکت میخام یه دیتاست بیارم (آیا از آن دیتاست میشود در این پراجکت استفاده کرد؟) که از همون کانکشن استرینگ app.config پراجه اولی استفاده بکنه.

ممنونم.

ahnsolution
شنبه 23 شهریور 1387, 11:00 صبح
لطفا یکی کمک بکنه

ممنونم

Sajjad.Aghapour
شنبه 23 شهریور 1387, 11:58 صبح
خوب میتونید connectionString ی که در app.Config پروژه اول ساختید به پروژه دوم پاس بدید و در اون ازش استفاده کنید.........

hdv212
شنبه 23 شهریور 1387, 12:28 عصر
فکر کنم باید پروژه ی اولی رو به لیست Reference های پروژه ی دومی اضافه کنی و بعد در پروژه ات توسط دستور ::Global به فضای نام پروژه ی مورد نظرت دسترسی پیدا کنی و از تنظمیات app.config رو از کلاس Settings بخونی، یه چیزی مثل این :

global::projectNameSpace.Settings.Default.yourConn ectionStringObject;

Sajjad.Aghapour
شنبه 23 شهریور 1387, 12:40 عصر
فکر کنم باید پروژه ی اولی رو به لیست Reference های پروژه ی دومی اضافه کنی و بعد در پروژه ات توسط دستور ::Global به فضای نام پروژه ی مورد نظرت دسترسی پیدا کنی و از تنظمیات app.config رو از کلاس Settings بخونی

فکر نکنم بتونی یه WinApp رو به رفرنس های یک Class Library اضافه کنی......

hdv212
شنبه 23 شهریور 1387, 15:45 عصر
یه نمونه برنامه برات گذاشتم که توش کلاسی هست که به app.config برنامه های دیگه دسترسی پیدا میکنه، اگه کد button1_click در WindowsApplication11 رو ببینی متوجه میشی که از یک پروژه ی دیگه (ClassLibrary1) به فایل پیکربندی برنامه ی WindowsApplication11 دسترسی پیدا کردم. در ضمن اگه به منوی Project > Windows Application 11 Properties بری، در بخش Setting میبینی که یک Setting با نام ConnectionStringObject اضافه و مقدار دهی کردم (که توسط کلاس Class1 به مقدار اون دسترسی پیدا میکنم)

نکته ی دیگه اینکه اگر Setting ای که میخوای بهش دسترسی داشته باشی رو خود ویژوال استودیو برات ساخته (مثل ConnectionString ها)، در تابع GetAppConfigValue این خطوط رو اصلاح کن :

//ConfigurationSectionGroup configSectionGroup = config.GetSectionGroup("applicationSettings");
ConfigurationSectionGroup configSectionGroup = config.GetSectionGroup("userSettings");

بدین شکل جاشونو عوض کن :

ConfigurationSectionGroup configSectionGroup = config.GetSectionGroup("applicationSettings");
//ConfigurationSectionGroup configSectionGroup = config.GetSectionGroup("userSettings");

دلیلش هم اینه که چون من خودم Setting رو اضافه کردم از قسمت userSetting استفاده میکنم ولی چون بعضی وقتها ویژوال استودیو Setting مورد نظر رو میسازه باید از قسمت applicationSetting استفاده کنی.
موفق باشید.

ordebehesht
شنبه 12 اسفند 1391, 19:44 عصر
البته با اين كار هم مي توني اين كارو انجام بدي من زياد از اون تگي كه خود .net ميسازه خوشم نمي ياد بعضي موقع اصلاً نتيجه رو درست نشون نميده.اصلاً
فقط به بخش <appSettings> نگاه كن اون كده كه جديده.
اين تگ براي اظافه كردن اطلاعات هست :

<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="sepanta.Properties.Settings.myConnectionString"
connectionString="your connection string"
providerName="your data provider" />
</connectionStrings>
<appSettings>
<add key="ConnectionString" value="your connection string "/>
</appSettings>
</configuration>و اين كد هم براي خوندن اون اطلاعات:

MySqlConnection Connection = new MySqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
و در نهايت اين كد هم براي تغيير اطلاعات:

XmlDocument MyDoc = new XmlDocument();
MyDoc.Load(Assembly.GetExecutingAssembly().Locatio n + ".config");

try
{
XmlElement TempNode = MyDoc.SelectSingleNode("configuration//appSettings//add") as XmlElement;
if (TempNode != null)
TempNode.SetAttribute("value", "new value");
}
catch (XmlException)
{
// Handle parse error here
}
MyDoc.Save(Assembly.GetExecutingAssembly().Locatio n + ".config");
البته اون مسير كلاس Assembly رو يه كمي بايد دستكاريش كني تا به فايل app.config برسي خود اين مسير به فايل yourprojectname.exe.config دسترسي پيدا مي كنه.
موفق باشيد:چشمک:


همه چيز اگر تيره تر مي نمايد روشن مي شود زود
تنها اين حقيقتي است باراني بايد تا رنگين كماني برآيد.

با سلام یکی میتونه در مورد تکه کد اولی کمی ریز توضیح بده