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

ممكن أحد يشرح لي هذا الكود؟؟؟؟؟؟؟؟؟

بدأه ariama في 18 مارس 2009 · 2 رد · 703 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته...

الموضوع كالتالي:

في موضوع لأحد الأخوة المحترفين عن الاتصال بقاعدة البيانات وربطها بالنماذج عن طريق المعالج

وواجهتني مشكلة عند الحفظ في قاعدة البيانات، فاعطاني-جزاه الله كل خير- هذا الكود:

Public Sub New()
			 ' This call is required by the Windows Form Designer.
		InitializeComponent()
		' Add any initialization after the InitializeComponent() call.
		Dim fullPath As String = System.IO.Path.GetFullPath(System.IO.Path.Combine(Application.StartupPath, "..\..\DatabaseName.mdf"))
		Dim ConnString = "Data Source=" + ".\SQLEXPRESS" + ";AttachDbFilename=" + fullPath + ";Integrated Security=True;User Instance=True"
		My.Settings.Item("Database1ConnectionString") = ConnString
	End Sub

وفعلاً نجحت في الحفظ ، ولكن لم أفهم هذا الكود،

ولقد بحثت كثيرا ولم أجد شرح لهذا الكود، وسؤالي هو: هل من الممكن أحد يشرح لي الكود، ولماذا وضعه في (Sub New)

وكيف استخدمه لأكثر من فورم، علما بأني مبتدئ جديد على البرمجة.

وهل من الممكن أحد يعطيني مثال على كيفية استخدامه في أكثر من فورم...

وكذلك: إذا أردت كتابة كود يتضمن فتح الاتصال وإغلاقه، فلابد من إعادة كتابة الكود السابق وأضيف عليه الكود التالي:

Dim con As New SqlConnection(ConnString)

ولكن هذي طريقة طويلة، خاصة عند استخدام أكثر من فورم.

ممكن أحد يرفق لي مثال يساعدني، خاصة واني جربت اضعه في موديول أو كلاس وما في نتيجة؟؟؟؟؟؟

وشكرا لكم

#2

مرحباً أخـ(ـتـ)ـي الكريمـ(ـة),

ليس هنالك ماشرح غير أن من كتب لك الـ( Code ) قام إستخدام عنوان مرجعي للمكان إقلاع البرنامج, وقام بذلك عن طريق استخدام الخاصية ( StartupPath ) من خصائص الـ( Application ) قبل ذلك قام بإستخدام العملية ( GetFullPath ) والتي ( ليس لها أي عمل ضمن هذا الإطار من المعالجة ), بعد استخدام العملية ( GetFullPath ) قام باستخدام العملية ( Combine ) والتي تجعل شكل عنوان ملف ما  ( عنواناً منطقياً )=( أي صحيح ), ان استخدام العملية ( Combine ) يتطلب معاملين ( الأول وهو جزء من أجزاء العنوان, ثاني وهو تكملة للأول ) .

بالنسبة للشكل الثاني أي ( "..\..\DatabaseName.mdf" ) ,وبالضرورة شرح الرموز ( "..\" ) الأولى التي يتم استخدامها للرجوع خطوة إلى الوراء أي إستيراد إسم المجلد الحاوي للملف أو المجلد المطلوب معرفة مكانه ) .

مثال, لدينا العنوان التالي : "C:\Program Files\BVS\LibrariesDB.mdf", _

علماً أن البرنامج موجود في العنوان التالي : "C:\Program Files\BVS\Application\BVS.exe", _

فإذا استخدمنا المرجع الذي قمت بذكره سيكون شكل العملية كالتالي :

 

Dim DBPath [color= #b1b100;]As String [color= #339933;]= [color= #990000;]System[color= #339933;].IO[color= #339933;].Path[color= #339933;].Combine[color= #009900;]( Application[color= #339933;].StartupPath[color= #009900;]([color= #009900;])[color= #339933;], [color= #0000ff;]"..[color= #000099; font-weight: bold;]LibrariesBD.mdf" 
[color= #009900;])

وهكذا, إذا احتجت شرح أو إعادة شرح شيء ما, لاتتردد في سؤال عنه,

بالتوفيق .

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

#3

السلام عليكــم ورحمـة الله وبركاتــه ،،

هذا الكود باختصار لتغيير نص الأتصال بقاعدة البيانات في ملف أعدادات البرنامج،

ومثلما ذكرت سابقاً ، ان طريقة المعالج مع قواعد البيانات المحلية (المضمنة في نفس المشروع) انها تنسخ إلى المجلد bin عند تشغيل البرنامج ويتصل البرنامج بهذه النسخة ، واي تغيرات على البيانات تحدث في الأساس على النسخة بدون ان تتأثر قاعدة البيانات الأصل. وهذا يعني ان التغيرات تفقد في كل مرة يشتغل فيها البرنامج (من خلال الفيجوال استديو). الأمر مختلف عند تشغيل البرنامج نفسه من خلال مستكشف الويندوز (جرب ذلك )

اقتباس
ولماذا وضعه في (Sub New) وكيف استخدمه لأكثر من فورم

لأنه إذا غيرت نص الأتصال في ملف الأعدادات (My.Settings) فالتغير يحصل على مستوى البرنامج كامل، بمعنى انك تحتاج تغيره مرة واحدة فقط ، طبعاً داخل اجراء مثل New او Load (او داخل ملف الأعدادات نفسه).

اقتباس
إذا أردت كتابة كود يتضمن فتح الاتصال وإغلاقه، فلابد من إعادة كتابة الكود السابق وأضيف عليه الكود التالي:

Dim con As New SqlConnection(ConnString)

لا حاجة لإعادة كتابة الكود السابق، يكفي ان تستخدم:

Dim con As New SqlConnection(My.Settings.MineConnectionString)

اتمنى تكون الصورة اتضحت، واعتذر عن التأخير في الرد.

[وسط]لا اله الا انت سبحانك انى كنت من الظالمين

[/وسط]

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