الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طلب : ما هى طريقة عمل متغير global من نوع string

مغلق
بدأه sakr-el-hack في 25 يونيو 2007 · 9 رد · 992 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عاوز اعرف طريقة عمل متغير global من نوع string

بحيث يمكن إستخدامه فى أى صفحه من صفحات الموقع دون أى مشاكل

الفكره فى ذلك هى حفظ متغير connection string لقاعدة بيانات الموقع بحيث عند تغيير اى شئ فى بيانات الإتصال

يتم تغيير محتوى هذا المتغير فقط

تم تعديل هذه المشاركة بواسطة sakr-el-hack في 25 يونيو 2007 في 17:32

#2

بافتراض ان لديك appsetting بالاسم myConnectionString في web.config وباستخدام ASP.NET 1.1

او

بافتراض ان لديك connectionstring بالاسم myConnectionString في web.config و باستخدام ASP.NET 2.0

فان الكلاس التالي يقوم بالمهمة:

public class MyGlobalClass
	{

private static string myConnectionString;

static MyGlobalClass()
		{
			//ASP.NET 1.1
			myConnectionString = ConfigurationSettings.AppSettings["myConnectionString"];
			//ASP.NET 2.0
			myConnectionString = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;
		}

static string MyConnectionString { get { return myConnectionString; } }

}

الان يمكنك استدعاء المتغير من اي مكان باستخدام الكود:

MyGlobalClass.MyConnectionString

تم تعديل هذه المشاركة بواسطة madani في 25 يونيو 2007 في 19:42

#3

هلا أخوى madani

شكرا على ردك والإهتمام بالموضوع

لكن لى بعض الأسئله

الكلاس public class MyGlobalClass اكتبه فين بالتحديد بحيث يكون public لكل صفحات الموقع

وبالنسبه للكود الموجود بردك

أعتقد انه بيعمل داله بحيث ترجع المتغير myConnectionString عند إستدعائها

لكن بها الأكواد لا أعرفها لإنى مبتدأ

ConfigurationSettings.AppSettings["myConnectionString"];

ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;

وبالنسبه لكود الكونكشن بالتحديد فين أكتبه

connectionstring  = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;Data Source=LOCALHOST
"

أرجو أنك توضحها ولو بكلمات بسيطه

لك تحياتى

#4

لاحظ أنه يمكنك اضافة سلسلة الاتصال لقاعدة البيانات في ملف اعدادات الموقع بالشكل التالي:

ستجد عند انشاء ملف الاعدادات الفريد على مستوى التطبيق (web.config) أن هنالك قسما اسمه كالتالي:

<connectionStrings />

هلأ انت استبدل الكود السابق بما يلي:

<connectionStrings>
<add name="dbconn" connectionString="Here is your connection string which you can use it in your application."  providerName="System.Data.SqlClient" />
</connectionStrings>

هلأ اذا بدك تجيب قيمتها ضمن التطبيق فالموضوع على نمطين:

1- في عنصر SqlDataSource ستجد أن اسم الاتصال موجود ضمن قائمة معالج اعداد العنصر (بشكل واضح)

2-في الكود كالتالي:

using System.Data.SqlClient;
.........
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconn"].ConnectionString);
//This connection will have that connection string in its connectionstring property.

أرجو أن تكون قد توضحت الفكرة في هذا المجال

#5

هلا أخوى ومنقذى Arwany

الحمد لله توضحت الفكره وتم تنفيذ الكود بنجاح

وهذا مثال

1- كود إضافة ال connection فى ملف web.config

<connectionStrings>
	<add name="dbconn" connectionString="Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;Data Source=LOCALHOST
" providerName="System.Data.SqlClient"/>

وهذا كود التطبيق حيث يقوم بعرض بيانات الجدول فى GridView

string query = "select * from Products";
			SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["dbconn"].ConnectionString);
			SqlDataAdapter adaptor = new SqlDataAdapter(query, con);
			DataSet ds = new DataSet();
			adaptor.Fill(ds);
			GridView1.DataSource = ds;
			GridView1.DataBind();

تسلم أخوى Arwany على الإيضاح

وشكرا لك أخوى madani على المساعده

#6

اخي sakr-el-hack,

اعتقدت انك ملم بالطريقة العادية (اي التي ذكرها الاخ arwany,بحيث تحصل على نص الاتصال مباشرة من web.config) :) ,لذلك كتبت لك كود global.

هناك مثال عن الحالات التي تحتاج فيها الى متغير global وهو مثلا اذا كنت تبرمج على جهازك ثم تعمل deployment على سيرفر ثاني.طبعا نص الاتصال سيكون مختلفا و ربما لا تحبذ تغيير نص الاتصال كلما عملت deployment او عدت للعمل على جهازك.في هذه الحالة ننشيء global static property تقرأ من ال web.config و يكون المفتاح هو اسم الجهاز + كلمة "-connectionstring" و نضيف سطر لكل جهاز كالتالي:

على افتراض ان جهازي اسمه madanicomp و السيرفر هو myserver فساقوم باضافة سطرين كالتالي:

<connectionStrings>
		<add name="madanicomp-ConnctionString" connectionString="Data Source=localhost;Initial Catalog=MyDB;uid=sa;pwd=mypass" providerName="System.Data.SqlClient"/>
<add name="myserver-ConnctionString" connectionString="Data Source=213.132.66.77;Initial Catalog=MyDB32;uid=sa;pwd=mypass22" providerName="System.Data.SqlClient"/>
	</connectionStrings>

كما تلاحظ ان هناك مفتاح لجهازي و مفتاح للسيرفر.رغم هذا فان الglobal static property ستستطيع الحصول على نص الاتصال بالكود التالي:

myConnectionString = ConfigurationManager.ConnectionStrings[Environment.MachineName+"myConnectionString"].ConnectionString;

كما ترى فاننا استخدمنا الخاصية Environment.MachineName للحصول على اسم الجهاز ,فان كنت اعمل على جهازي فانني ساحصل على نص الاتصال في السطر الاول و ان كنت اعمل على السيرفر فساحصل على السطر الثاني وهذا كله بدون ان اغير الweb.config

تم تعديل هذه المشاركة بواسطة madani في 25 يونيو 2007 في 21:37

#7

شكرا جزيلا استاذ مدني

بالفعل هذا الموضوع يصادفني وفي غالب الأحيان أقوم بتخزين السلسة الثانية بشكل (Commented)

بالفعل طريقة جميلة

#9

كما عودنا الأستاذ Scool

اللمسة السحرية الأخيرة

#10

كما يمكنك الاستفادة من موضوع بنفس الفكره

على الرابط التالي

/index.ph...130488&st=0

综合互联网公司,提供新闻、军事、体育、科技、娱乐、教育等资讯内容

إن أفضل جندي هو الذي لا يقــــــــــــاتل

والمقاتل المتمكن هو الذي ينجح بلا عنف

وأعظم فاتح يكسب دون حـــــــــــــــــرب

وأنجح مدير يقود دون إصدار الأوامـــــــر

إن هذا ما يسمى ذكاء عدم الهجـــــــــــــوم

وما يطلق عليه سيادة الرجــــــــــــــــــــال

综合互联网公司,提供新闻、军事、体育、科技、娱乐、教育等资讯内容

هذا الموضوع مغلق.

مواضيع مشابهة