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

شرح كيفية عمل قاعدة بيانات أثناء التثبيت

مغلق
بدأه khabini.net في 30 نوفمبر 2004 · 27 رد · 9,891 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

أخوانى الكرام كانت هذه المشكله تحول بينى و بين إستخدام السيكوال فى برامجى

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

و أخيرا وجدت الحل و سوف أعرضه عليكم خطوه بخطوه

أولا أحب أن أنوه عت المرجع و هى مكتبة MSDN

بإسم الله تبدأ

1- قم بإنشاء مشروع جديد من نوع Class Library

2- حدد إسم المشروع و ليكن CreateFatabase مثلا

3- أنقر بالماوس على المشروع بالزر الايمن و أختر Add ثم AddNewItem

4- أختر Installer Class

5- علينا الان إنشاء إتصال مع خادم قواعد البيانات- من Server Explorer أنقر بالماوس على الزر الايمن و أختر Add Connection ثم إكتب إسم الخادم و ليكن localhost و قاعدة البيانات Master و أختر الدخول بالتكامل مع Windows NT

6- سيظهر فى متصفح الخوادم Server Explorer إتصال جديد أسحبه و ضعه على الInstaller Class المضاف

7- مره أخرى أنقر بالزر الايمن على المشروع و أختار Add ثم Add new Item و إختار ملف Text و أجعل إسمه sql.txt ملحوظه يجب أن تكون حالة الاحرف صغيره

8- فى هذا الملف ضع الكود اللازم لإنشاء جداول قاعدة البيانات مثل

CREATE TABLE [dbo].[Students] (
	[StdID] [int] NOT NULL ,
	[StdUserName] [nvarchar] (50) COLLATE Arabic_CI_AS NOT NULL ,
	[StdPassword] [nchar] (18) COLLATE Arabic_CI_AS NOT NULL ,
	[StdGroupe] [int] NOT NULL 
) ON [PRIMARY]

9- فى خصائص الملف sql.txt غير قيمة الخاصيه Build Action إلى Embeded Resource

10- أضف الكود التالى إلى Installer Class

Imports System.IO
Imports System.Reflection

Private Function GetSql(ByVal Name As String) As String
   Try

      ' Gets the current assembly.
      Dim Asm As [Assembly] = [Assembly].GetExecutingAssembly()

      ' Resources are named using a fully qualified name.
      Dim strm As Stream = Asm.GetManifestResourceStream(Asm.GetName().Name + "." + Name)

      ' Reads the contents of the embedded file.
      Dim reader As StreamReader = New StreamReader(strm)
      Return reader.ReadToEnd()
   Catch ex As Exception
      MsgBox("In GetSQL: " & ex.Message)
      Throw ex
   End Try

End Function

Private Sub ExecuteSql(ByVal DatabaseName As String, ByVal Sql As String)
   Dim Command As New SqlClient.SqlCommand(Sql, sqlConnection1)

   Command.Connection.Open()
   Command.Connection.ChangeDatabase(DatabaseName)
   Try
      Command.ExecuteNonQuery()
   Finally
      ' Finally, blocks are a great way to ensure that the connection 
      ' is always closed.
      Command.Connection.Close()
   End Try
End Sub

Protected Sub AddDBTable(ByVal strDBName As String)
   Try
      ' Creates the database.
      ExecuteSql("master", "CREATE DATABASE " + strDBName)

      ' Creates the tables.
      ExecuteSql(strDBName, GetSql("sql.txt"))

   Catch ex As Exception
       ' Reports any errors and abort.
       MsgBox("In exception handler: " & ex.Message)
       Throw ex
   End Try
End Sub

Public Overrides Sub Install(ByVal stateSaver As System.Collections.IDictionary)
   MyBase.Install(stateSaver)
   AddDBTable(Me.Context.Parameters.Item("dbname"))
End Sub

11-من فائمة File إختار Add Project و حدد نوعه Setup Project

12- سيظهر لك عدة مجلدات إختار Application Folder و قم بالنقر المزدوج عليه. فى الجهه اليمنى إنقر على الزر الأيمن و إختار Add ثم Project OutPut

13- إختر المشروع الذى أنشأته و الذى هو Class Library

14- أنقر على مشروع التثبيت بالزر اليمين و أختار View ثم User InterFace

15- أنقر بالزر اليمين على Start و إختار Add Dialoge

16- من القائمه التى ستظهر لك إختار textBoxes(A)

17- أختار الDialoge المنشأ و أنقر عليه بالزر اليمين ثم Move Up إلى أن يكون قبل Installation Folder

18- حدد الDialoge المنشأ لتغيير بعض خصائصه كما يلى

BannerText Specify Database Name

BodyText This dialog allows you to specify the name of the database to be created on the database server.

Edit1Label Name of DB:

Edit1Property CUSTOMTEXTA1

Edit2Visible, Edit3Visible,Edit4Visible False

19- أنقر بالزر اليمين على مشروع التثبيت و أختار View ثم Custom Actions

20- أنقر بالزر اليمين على install و إختار Add Custom Action

21- أختار Application Folder ثم الملف الذى أنشأناه سابقا

22- فى خصائص الCustom Action غير الخاصيه CustomActionData إلى /dbname=[CUSTOMTEXTA1

قم ببناء المشروعين و بهذا تكون قد أنتهيت

#2
اقتباس
BannerText Specify Database Name

BodyText This dialog allows you to specify the name of the database to be created on the database server.

Edit1Label Name of DB:

Edit1Property CUSTOMTEXTA1

Edit2Visible, Edit3Visible,Edit4Visible False

جزاك الله خيرااا

بس لو تشرح هذه العملية عربي اكون شاكر لك

لاني تنحت عند هذه النقطة

#3

السلام عليكم

أخي هذه الخصائص التي تظهر عند طلب إسم قاعدة البيانات من المستخدم

لإانا كتبت إسم الخاصيه و بجانبه القيمه التى قمت بوضعها به

مثلا الخاصيه BannerText

وضعت بها قيمه نصيه و هي Specify Database Name

و هكذا كل خاصيه و قيمتها

و يمكنك التغيير في هذه القيم كما تريد

إلا القيمه Edit1Property و ذلك لانها المتغير الذي يحمل إسم قاعدة البيانات

#4

بارك الله فيك

اقتباس
/dbname=[CUSTOMTEXTA1

هل نهاية اسم القاعدة السابقة تنتهي بعلامة / ام [

تم تعديل هذه المشاركة بواسطة mn_902 في 30 نوفمبر 2004 في 22:33

#6

يا سلام عليك يا khabini.com

تم التطبيق بنجاح

بس عندي سؤال عندما عملت ملف Setup وبدات في عملية التثبيت

طلب مني انا اكتب في خانة Edit1Label وهو اسم قاعدة البيانات انا كتبت Majed1

وعند فتحي ل Enterprise وجدت القاعدة اسمها Majed1 على حسب كتابة Edit1Labe

هل هذا سيؤثر عندما اقوم ببرنامجي بكتابة الكود الاتصال ب Master

وهنا كانت التسمية Majed1

ارجوا التوضيح او اني انا طبقت خطاء

واسف على كثر ة الاسئله

#7

التطبيق مظبوط أخي

و لكن القاعده ماستر ليست قاعدة بيانات عاديه أنها تحتوي على تفاصيل لقواعد البيانات الموجوده في السيكوال سيرفر

و المفروض أن تتعامل في برنامجك بقاعدة البيانات التى قمت بإنشاءها و هي

Majed1

#8
اقتباس
طلب مني انا اكتب في خانة Edit1Label وهو اسم قاعدة البيانات انا كتبت Majed1

في هذه الحالة اخاف من المستخدم يكتب شيء آخر مثلا Maj

وتكون القاعدة اسمها Maj وبرنامج المصمم بلغة فيجوال بيسك نت

يتصل ب Majed1

ماذا افعل لحل هذه المشكلة

حيث عملت Edit visble 2false

ولكن يعرض لي رسالة خطاء لابد من اضافة اسم للقاعدة

#9

في هذه الحاله يمكنك إلغاء الشاشه التي تعرض للمستخدم خيار كتابة إسم قاعدة البيانات

ثم إكتب

/dbname=Majed
#10

مشكووووووووووووورر

جزاك الله خيراا لك ولوالديك

#12

الاخ العزيز Khabini.net مجهود مقدر جدا ولك جزيل الشكر

عندي سؤال , في بعض التطبيقات نحتاج لان تكون هنالك بيانات أولية تكون موجودة في قاعدة البيانات عند تثبيت البرنامج أي يعتمد عليها البرنامج في التنفيذ , وبغض النظر عن نوعية أو كمية هذه البيانات , السؤال هو كيف يمكنني أن أقوم بادخال هذه البيانات أثناء التثبيت ؟؟

الحلول التي إستنتجتها وذلك علي حسب معرفتي بال Sql Server أن أقوم بعمل Backup والبحث عن طريقة لتنفيذ ال Backup أثناء التثبيت وبعد أن قرأت موضوعك المميز ذهب تفكيري بان أقوم بكتابة الجمل التي تقوم بالادخال في نفس الملف النصي الذي يحتوي علي الشفرة اللازمة لانشاء قاعدة البيانات فهل هذا هو الاسلوب الصحيح ,, أم هنالك طريقة أخري ؟؟ أرجو الافادة

والله الموفق

#13

حلوو

جميل جدا

بارك الله فيك

::::التوقيع::::

موقع ممتاز

وان شاء الله يفيد الجميع

وشكرا

؟؟لماذا لا يصل الايميل المرسل من صفحتي الي الهوتميل؟؟

مستوي الجدية في المواضيع المطروحة

لا اله الا الله محمد رسول الله

#14

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

الأخ khabini.net

عمل رائع بارك الله فيك ...ولكن قابلتني بعض المشاكل وهي في sql.txt

إذا كان من ضمن السكربت إنشاء استعلامات لا تتم عملية التثبيت ويعطي رسالة خطأ ...

إذا كان لديك حل ..أكون ممنون لك بالشكر الجزيل

وشكرا أخي

#15

بصراحة اخوي موضوع اكثر من رائع ومهم مرة لكن معليش استحملنا عندي بعض الاسئلة

1.هل بمقدوري ان اضيف في sql.txt كل ال DB حقتي واعمل لها generate sql script يعني لو نفذت ال setup راح تتنزل كل الDB تبعتي

2.اذا كان عندي job هل يمكن وضعها كذلك في نفس txt ام اعمل لها اخر وهل تتنفذ

3.في الفقرة 9ممكن توضح من فين لاني مالقيتها

4.كذلك من الخطوة 14 ممكن كمان توضح مني لاقيتها معليش بس لوتشرح بالتفصيل لانه بصراحة موضوعك مهم واتمنى استفيد منة

لو ممكن كمان توضح اي الملفات من برنامج vb.net اضعها بالsetup لاني جربت اعمل واتنفذ لكن نزل كذلك كل الsolution معاه

ان شاء الله مااكون ثقلت عليك وجزاك الله خير مقدما

#16

السلام عليكم

اسمح لي ان اجاوب عليك لان الاخ khabini.net الان خارج المنتدى لظروف عمله بالخارج

وان شاء الله يعود الينا في اقرب وقت

اقتباس
1.هل بمقدوري ان اضيف في sql.txt كل ال DB حقتي واعمل لها generate sql script يعني لو نفذت ال setup راح تتنزل كل الDB تبعتي

نعم ,,الاخ khabini.net وضع مثال لجدول واحد فقط وهو STUDENT

اقتباس
.اذا كان عندي job هل يمكن وضعها كذلك في نفس txt ام اعمل لها اخر وهل تتنفذ

لم افهم المقصود

اقتباس
.في الفقرة 9ممكن توضح من فين لاني مالقيتها

حدد SQL.TXT ومن ثم الخصائص تابع اللون الاحمر في الصورة

SQL_VBNET.JPG

اقتباس
.كذلك من الخطوة 14 ممكن كمان توضح مني لاقيتها معليش بس لوتشرح بالتفصيل لانه بصراحة موضوعك مهم واتمنى استفيد منة

انظر للصورة وهي واضحة

SQL_VBNET2.JPG

ان شاء الله اكون وفقت في الايضاح

وبالتوفيق

#17

في فقرة 2 انا عاملة الوظائف اللتي تعمل اوتوماتيك من النظام هل كذلك اعمل لها sql script واضعها في نفس الصفحة مع ال DB

ماهي ملفات الvb الي سالحقها بالsetup

وجزاك الله كل الخير على تجاوبك وانا ممتنة لك :)

تم تعديل هذه المشاركة بواسطة roza_03 في 8 مايو 2005 في 01:21

#18

السلام عليكم

كل الشكر والتقدير للإخ khabini.net الموضوع مهم جداً ونرجوا من الأخوان في النتدى تثبيت الموضوع مع الشكر الجزيل لهم وكل الحب والتقدير .

جربت الطريقه ولكن عندي عدة اسئلة وارجو منك الاجابه مع الشكر لك :

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

Protected Sub AddDBTable(ByVal strDBName As String)

Try

' Creates the database.

ExecuteSql("master", "CREATE DATABASE " + strDBName)

' Creates the tables.

ExecuteSql(strDBName, GetSql("sql.txt"))

إذا كانت القاعدة الرئيسية للبرنامج الخاص بي على جهازي هي d1 هل يتم تغيير اسم القاعدة الى d1 في الكود السابق؟

ماهي الفائدة من textboxA إذا حددت ان يكون اسم قاعدة البيانات d1 في الكود ؟ وإذا تم تغيير اسم القاعدة الى اسم اخر هل يتأثر البرنامج على اساس انه من الاساس كان اسم القاعدة d1 ؟

نفذت كل خطواتك بدقة ولكن عندي تشغيل البرنامج على جهاز آخر تظهر لي رساله مفادها (لم يتم العثور على السيرفر أو تم رفض الدخول ) مع العلم بإنه يوجد سيرفر وبإمكان الدخول عليه ؟

شاكراً لك مرة آخرى على التجاوب معنا :D

على فكره برنامجي الذي اعمل عليه جاهز من حث الفورم والبتون ... , ولكن انتظر ردك إذا لم أصل الى نتيجة اتجهت الى أختيار قاعدة الاكسس . :s

#19

جزاك الله كل خير

فعلا معلومات قيمة

#20

جزاك الله خيرا

#21

مشكور

#22

عمل رائع بارك الله فيك

#23

عمل رائع بارك الله فيك

#24

السلام عليكم

اذا عملت generate sql script و الحقتها مع البرنامج البرنامج بتعرف عليها لوحد و لا لازم نكتب كود خاص لذلك *-)

#25

جميل جدا

بارك الله فيك

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

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