PDA

View Full Version : سوال: مشکل در استفاده از app-Config



hamide_kh
سه شنبه 11 خرداد 1389, 22:45 عصر
سلام خدمت دوستان عزیز
من در برنامه ام برای ارتباط با دیتابیس می خوام از app_config استفاده کنم،ابتدا app_config را به این صورت نوشتم



<?xml version="1.0" encoding="utf-8" ?>
<configuration>

<connectionStrings>
<add name="constr"
providerName="System.Data.SqlClient"
connectionString="Data Source=.;
Integrated security=SSPI;Initial Catalog=Sepah;" />
</connectionStrings>

</configuration>

در فرم مربوطه هم برای بدست آوردن کتنکشن استرینگ از کد زیر استفاده می کنم


string sqlConnectString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;

اما خطای زیر را میده


The name 'ConfigurationManager' does not exist in the current context

در ضمن NameSpace زیر را هم add میکنم

using System.Configuration;

اما باز مشکلم حل نشد


به نظر شما باید چه کاری انجام بدم

s.khoshfekran
سه شنبه 11 خرداد 1389, 22:53 عصر
http://www.barnamenevis.org/forum/showthread.php?t=223019

armiin
چهارشنبه 12 خرداد 1389, 00:04 صبح
این مشکل در چند تاپیک مطرح شد و هیچکدوم به نتیجه نرسید ! ( به طور مثال : http://barnamenevis.biz/forum/showthread.php?t=199216 )
در واقع با استفاده از یک ConnectionString در app.config بتوان هم در حالت کد (Connected) و هم در حالت ویزارد (Disconnected ) مثل استفاده از SqlDataAdapter به دیتابیس وصل شد ، مشکل در این جا بود که وقتی با استفاده از applicationSettings --> Property Binding --> ConncectionString در کامپوننت SqlConnection به app.config مقدار ConnectionString را میدهیم در حالت کد به این مقدار دسترسی نداریم ( به جز حالتی که برنامه نویس با استفاده از آن به مقدار کدهای XML دسترسی پیدا میکند ، اصلا استفاده از این روش به صرفه نیست ، به علت کدنویسی زیاد آن )
بنده چند وقت قبل روشی به ذهنم رسید که فرایند بالا رو برعکس اجرا کنم ، یعنی با استفاده از Key به app.config مقدار ConnectionString را بدهم ولی فقط در کد به آن دسترسی داشته باشم ، در عوض هنگام Load برنامه مقدار ConnectionString را به کامپوننت ها بدهم ، ممکنه الان کمی گیج شده باشید پروژه ی زیر را دانلود کنید متوجه میشید !

این کد برای ConnectionString در app.config اضافه شده


<appSettings>
<add key="MyConnectionString" value="data source=.;database=DatabaseName;integrated security=sspi"/>
</appSettings>
نام دیتابیس در پروژه Test است
نام جدول Marks است با فیلد های (StudentID-int ) ( Course -Varchar(50))(Mark-Float)
اگر دقت کنید sqlConncetion به دیتابیسی به نام AdventureWorks متصل است ، به همین خاطر در Load صفحه به خاصیت ConnectionString آن مقدار داخل app.config داده میشود
مقدار داخل app.config با کد زیر که در پرژه هم هست قابل بازیابیست


new AppSettingsReader().GetValue("MyConnectionString", typeof(string)).ToString();