PDA

View Full Version : کاربرد app.config چیست؟



mf_007
سه شنبه 24 فروردین 1389, 20:20 عصر
من سرچ کردم ولی جواب مورد نظرم رو نگرفتم

چرا app.config رو باید استفاده کنیم در صورتی که تو داخل برنامه حتما باید کانکشن استرینگمون رو معین کنیم به این شکل




SqlConnection conn = newSqlConnection("Data Source=.;Initial Catalog=bank;Integrated Security=True");



آیا می شه کانکشن استرینگ رو بدون اینکه تو خود برنامه نوشت از فایل app.config خوند؟
من مشکلم اینه که مثلا برنامه رو می نویسم کانکشن استرینگ تو یه سیستم دیگه تغییر می کنه و برنامه درست عمل نمی کنه حالا باید چیکار کنم app.config کمک میکنه که این مشکل حل بشه؟چه جوری باید ازش استفاده کنم؟

Ehsan.Saradar
سه شنبه 24 فروردین 1389, 21:01 عصر
یک مثال ساده :

فرض کنید در app.config دارید :



<?xml version='1.0' encoding='utf-8'?>
<configuration>
<connectionStrings>
<clear />
<add name="Name"
providerName="System.Data.ProviderName"
connectionString="Valid Connection String;" />
</connectionStrings>
</configuration>حال برای دسترسی به آن :


using System.Configuration;

class Program
{
static void Main()
{
GetConnectionStrings();
Console.ReadLine();
}

static void GetConnectionStrings()
{
ConnectionStringSettingsCollection settings =
ConfigurationManager.ConnectionStrings;

if (settings != null)
{
foreach(ConnectionStringSettings cs in settings)
{
Console.WriteLine(cs.Name);
Console.WriteLine(cs.ProviderName);
Console.WriteLine(cs.ConnectionString);
}
}
}
}
این طوری اگر در برنامه خود در چندید جا از connection string استفاده کرده اید برای تغییر آن کافی است تنها مقدار درون App.config را تغییر دهید

mf_007
سه شنبه 24 فروردین 1389, 22:01 عصر
ببخشید من درست متوجه نشدم میشه در مورد این کدی که نوشتین یکم توضیح بدین
در مورد نحوه استفاده

yavar00111
پنج شنبه 21 مرداد 1389, 15:42 عصر
این خیلی ساده تره

<appSettings>
<add key="ConnectionString"
value="Server=localhost;Integrated
Security=true;" />
</appSettings>

روش استفادش در برنامه

string connectString =
ConfigurationSettings.AppSettings["ConnectionString"];

rroona
پنج شنبه 08 تیر 1391, 10:27 صبح
سلام
زمانی که من connection string رو در فایل app.config تغییر میدم هیچ اتفاقی نمیافته. یعنی با اجرای برنامه یه فایل که نامش با نام فایل اجرایی یکی هست و فقط پسوندش config هست ، ایجاد میشه و تنظیمات قبلی رو توش میشه دید و هیچ ارتباطی با بانک هم برقرار نمیشه.ممکنه بگیر اون فایل چیه؟
اینو بگم که من از Dataset برای ارتباط استفاده میکنم.
مرسی

samadblaj
پنج شنبه 08 تیر 1391, 11:33 صبح
سلام دوستا عزیز ببخشید مزاحم شدم:

ببینید این اطلاعات app.config منه.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="WindowsFormsApplication1.Properties.Settings.testC onnectionString"
connectionString="Data Source=MReza-PC;Initial Catalog=test;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>


توی این اتصال نام سیستم من MReza-PC; هستش. خوب الان میرم روی یه سیستم دیگه برنامه رو نصب میکنم باید بیام توی app.config و Data Source رو به نام کامپیوتر تغییر بدم ؟ :متفکر:


ممنونم

jafarpalideh
پنج شنبه 08 تیر 1391, 13:47 عصر
دوستان سلام
از دوستان کسی هست که یه برنامه کوچیک از کاربرد عملی app.config بزاره؟
واقعا ممنون میشم اگه کاربردش رو با یک برنامه ی کاربردی بشیار کوچک نمایش بدید.

Esmail Solhkhah
پنج شنبه 08 تیر 1391, 14:22 عصر
http://www.codeproject.com/Articles/10981/Understanding-Section-Handlers-App-config-File

app.config برای نگهداری تنظیمات برنامه بکار میره مثلا وقتی شما یه دیتاست ایجاد کردید تو یه مرحله از ویزارد میبینید که نام کانکشن رو ازتون سوال میکنه بعد اون رو تو یه فایلی تحت عنوان app.config ذخیره میکنه (داخل پروژه)
حالا فرض کنید شما پروژه رو بیلد کردید و براش ستاپ هم ساختید و تو سیستم مشتری نصب کردید احتمالا مشخصات سرور تو سیستم مشتری با مشخصات سیستم شما یکی نیست به عنوان مثال نام کامپیوتری که SQL SEVER روش نصب هست.

بعد بیلد کردن پروژه، شما میبینید تو فولدر خروجی یه فایلی همنام با فایل اصلی اجرایی برنامه دارید منتها با پسوند .config این همون app.config شما هست که بعد نصب در سیستم مشتری اگه تغییرش بدید برنامه از این تغییرات استفاده خواهد کرد منتها با فرض اینکه شما تنظیمات رو از این فایل بخونید (دوستان اشاره کردن)
مثلا کانکشن استرینگ رو از این فایل بخونید.

این app.config فقط برای نگه داری کانکشن استرینگ ها نیست و درکل هر تنظیماتی رو که لازم داشتید میتونید بهش اضافه کنید.از Properties پروژه قسمت Settings
این نکته رو هم اشاره کنم که شما وقتی پروژه رو یه بار Clean کنید بعد دوباره بیلد کنید فایل معادل app.config در خروجی بازنویسی میشه .

این تنظیمات به دو قسمت یا Scope تقسیم میشن
الف: Application
ب: User
اونهایی که Section شون برابر Application هست ReadOnly هستن یعنی شما ران تایم نمیتونید تغییرشون بدید اونایی که Section شون User هست در زمان اجرای برنامه هم قابل تغییر هستن.

دقت کنید برنامه زمان اجرا این فایل رو تو یه مسیر موقت سیو میکنه و اگه شما ران تایم تغییراتی تو این فایل دادید در همون مسیر موقت سیو میشه و با اجرای بعدی از همون فایل موقت پارامترها رو میخونه پس اگه کاربر ویندوز عوض کرد یا بنا به هر دلیلی این فایل حذف شد آخرین تغییرات سیو شده شما برای قسمت User از بین میره.

برای تغییرات زمان اجرا در قسمت
نمونه برنامه های کوچک و مفيد در سي شارپ (http://barnamenevis.org/showthread.php?64210-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D9%88%DA%86%DA%A9-%D9%88-%D9%85%D9%81%D9%8A%D8%AF-%D8%AF%D8%B1-%D8%B3%D9%8A-%D8%B4%D8%A7%D8%B1%D9%BE)
نمونه گذاشتم.

موفق باشید.

alimooghashang
جمعه 21 مهر 1391, 19:08 عصر
اگه دیتابیس یوزر و پس داشته باشه، میشه از این روش استفاده کرد؟ فایده نداره که ، اطلاعات دیتابیس رو همه به راحتی میتونن بخونن!
اگه نخواهیم یوزر و پس رو داخل فایل بدیم باید چیکار کنیم؟
باید داخل برنامه هی کامپایل کنیم؟

roolinjax
جمعه 21 مهر 1391, 19:31 عصر
اگه دیتابیس یوزر و پس داشته باشه، میشه از این روش استفاده کرد؟ فایده نداره که ، اطلاعات دیتابیس رو همه به راحتی میتونن بخونن!
اگه نخواهیم یوزر و پس رو داخل فایل بدیم باید چیکار کنیم؟
باید داخل برنامه هی کامپایل کنیم؟

می تونین رشته اتصال رو با یه الگوریتم قابل بازگشت انکریپت کنید تا حتی برای خودتون هم دیگه قابل فهم نباشه !!!
فقط موقع خوندن و استفاده اونو دیکد کنین.
خیلی ساده است.
در ضمن اگر دیتابیس رو لوکال در نظر بگیرین ، دیگه نیازی نیست که توی هر سیستم از مشتریانتون رشته اتصال رو دستکاری بکنین. حتی برای نسخه اکسپرس.
موفق باشید.

alimooghashang
جمعه 21 مهر 1391, 19:35 عصر
نه دیگه لوکال نیست
قراره کلی کلاینت به یک سرور متصل بشن

roolinjax
جمعه 21 مهر 1391, 19:39 عصر
نه دیگه لوکال نیست
قراره کلی کلاینت به یک سرور متصل بشن

اگر اینطوره و شبکه تون هم به راهه که مشکلی نیست ، به جای لوکال از آی پی سیستم سرور استفاده کنید و بگذارید یوزرهاتون از برنامه تون نهایت لذت رو ببرن. چشمک دست ساز !!!

alimooghashang
جمعه 21 مهر 1391, 19:42 عصر
اگر اینطوره و شبکه تون هم به راهه که مشکلی نیست ، به جای لوکال از آی پی سیستم سرور استفاده کنید و بگذارید یوزرهاتون از برنامه تون نهایت لذت رو ببرن. چشمک دست ساز !!!

خب اگه اینطوره که اصلا نیازی به app.config نیست و داخل برنامه string connection رو داخل یک متغیر ذخیره میکنیم!

roolinjax
جمعه 21 مهر 1391, 19:46 عصر
خب اگه اینطوره که اصلا نیازی به app.config نیست و داخل برنامه string connection رو داخل یک متغیر ذخیره میکنیم!

شما چه بخوای چه نخوای فایل کانفیگ روی سیستم ها ساخته میشه و کانکشن هم توش قرار می گیره .
حالا می تونین یه کاری بکنین ، برای نسخه کلاینت همون آی سیستم سرور رو بذارین و برای نسخه سرور هم لوکال و اینطوری حداقل جلوی دیده شدن یوزر و پسورد دیتابیس رو توسط کاربران عادی بگیرین.
حتی اگر این مسئله باید از دید کاربر مدیر (سرور) هم مخفی بمونه ، همین کارو برای نسخه سرور هم انجام بدین.
من خودم همیشه کانکشنمو انکریپت می کنم و موقع نیاز دیکریپت می کنم و خیالم راحته که کسی به دیتابیسم دسترسی نداره.