تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] تضمين قاعدة البيانات داخل مجلد العمل
#11
(25-11-19, 02:22 AM)Mustafa Shaker كتب :
(24-11-19, 05:20 PM)asemshahen5 كتب : الكود موجود في كلاس : AttachDatabaseNameCls

اسمه :AttachDatabaseName

حمل المثال و انظر الى الكلاس سيجيب عن كل اسالتك .
عفوا اخي .. حاولت فهم المثال ولكني لم اصل للحل المطلوب 
ممكن لو في فيديو تبعتهولي او كود attach و كيفيه كتابته في vb.net و اثبت برنامج sqlexpress بس ولا مطلوب حاجه تاني لاني بجد تعبت و جربت تقريبا الConnection String كلها و بيظهر خطأ في الاتصال
و مشكور مقدما

(25-11-19, 02:22 AM)Mustafa Shaker كتب :
(24-11-19, 05:20 PM)asemshahen5 كتب : الكود موجود في كلاس : AttachDatabaseNameCls

اسمه :AttachDatabaseName

حمل المثال و انظر الى الكلاس سيجيب عن كل اسالتك .

عفوا اخي .. حاولت فهم المثال ولكني لم اصل للحل المطلوب 
ممكن لو في فيديو تبعتهولي او كود attach و كيفيه كتابته في vb.net و اثبت برنامج sqlexpress بس ولا مطلوب حاجه تاني لاني بجد تعبت و جربت تقريبا الConnection String كلها و بيظهر خطأ في الاتصال
و مشكور مقدما
الرد }}}
تم الشكر بواسطة: asemshahen5 , asemshahen5
#12
لعمل اتاش استخدم اسم قاعدة البيانات في نص الاتصال ماستر اي يوجد نص اتصال خاص بعمل الاتاش ليس له علاقة بنص الاتصال الخاص بقاعدة بيانات البرنامج .

هذا الكود مشروح :

PHP كود :
   ''' <summary>
    ''' 
عمل اتاش لقاعدة البيانات
    
''' </summary>
    ''' 
<param name="MYDBNAME">اسم قاعدة البيانات</param>
 
   ''' <param name="f1lepathprimary">مكان و اسم ملف mdf</param>
    ''' 
<param name="f1lepathlog">مكان و اسم الملف log</param>
 
   ''' <returns>العودة بقيمة True في حال النجاح و قيمة False في حال الفشل</returns>
    ''' 
<remarks>شركة العاصم للبرمجيات https://asemshahen5.blogspot.com/ </remarks>
 
   Public Function AttachDatabaseName(MYDBNAME As Stringf1lepathprimary As Stringf1lepathlog As String) As Boolean
        Try
            
'كود الاتصال الخاص بعملية الاتاش'
 
           Dim SqlConnection1 As New SqlClient.SqlConnection("Data Source=(Local)\sqlexpress " &
 
                    ";Initial Catalog=tempdb;Integrated Security=SSPI;")
 
           'تعريف سيكول كوماند'
 
           Dim CMD As New SqlClient.SqlCommand()
 
           'نوع الكوماند تيكست اي استعلام'
 
           CMD.CommandType CommandType.Text
            
'تحديد كود الاتصال بنص الاتصال الذي في الاعلى'
 
           CMD.Connection SqlConnection1
            If SqlConnection1
.State ConnectionState.Closed Then SqlConnection1.Open()
 
           'الاستعلام الخاص بعمل الاتاش'
 
           CMD.CommandText "sp_attach_db " MYDBNAME ",'" f1lepathprimary "'" ",'" f1lepathlog "'"
 
           'الاستعلام الخاص بعمل الاتاش'
 
           '' OR CMD.CommandText "CREATE DATABASE " MYDBNAME " ON (FILENAME = '" f1lepath "')FOR ATTACH"
 
           'تنفيذ الاستعلام'
 
           CMD.ExecuteNonQuery()
 
           'اغلاق الاتصال'
 
           SqlConnection1.Close()
 
           SqlConnection1.Dispose()
 
           'رسالة تخبر بنجاح عملية الاتاش'
 
           MessageBox.Show("تم انشاء اتصال  قاعدة البيانات  بالسرفر ""Attach Database",
 
                   MessageBoxButtons.OKMessageBoxIcon.InformationMessageBoxDefaultButton.Button2,
 
                   MessageBoxOptions.RtlReading)
 
           'العودة بقيمة True'
 
           Return True
        Catch ex 
As Exception
            
'رسالة تفيد بفشل عملية الاتاش و سبب الخطء'
 
           MessageBox.Show(ex.Message vbNewLine "فشل البرنامج فى انشاء اتصال  بقاعدة البيانات  بالسرفر",
 
                              "Attach Database"MessageBoxButtons.OKMessageBoxIcon.Information,
 
                              MessageBoxDefaultButton.Button2MessageBoxOptions.RtlReading)
 
           'العودة بقيمة False'
 
           Return False
        End 
Try
 
   End Function 

شرح كود الاستدعاء الخاص بالزر :

PHP كود :
   'كود الاستدعاء الخاص بعملية الاتاش في زر'
 
   Private Sub BtnAttachDatabase_Click(sender As ObjectAs EventArgsHandles BtnAttachDatabase.Click
        
'تعريف متغير صندوق حوار فتح'
 
       Dim openfd As New OpenFileDialog
        
'الفلتر على نوع قاعدة البيانات mdf'
 
       openfd.Filter "Sql Server Database(*.mdf)|*.mdf"
 
       'عنوان صندوق الحوار فتح'
 
       openfd.Title "Attach Database"
 
       'التاكد من اختيار موافق لتلافي حصول خطا'
 
       If openfd.ShowDialog DialogResult.OK Then
            
'التاكد من عدم وجود قاعدة البيانات'
 
           If (Cls.GetAttachDatabaseName(Txt_DBName.Text) = FalseThen
                
'تعريف متغير نصي فيه اسم قاعدة البيانات'
 
               Dim SafeFileName As String openfd.SafeFileName
                
'حذف لاحقة اسم قاعدة البيانات'
 
               SafeFileName SafeFileName.Replace(".mdf""")
 
               'تعريف متغير نصي فيه اسم و عنوان قاعدة البيانات'
 
               Dim DBName As String openfd.FileName
                
'استبدال لاحقة mdf من اسم و عنوان قاعدة البيانات بلاحقة log'
 
               DBName DBName.Replace(".mdf""_log.ldf")
 
               'وضع اسم ومسار ملف اللوغ في ليبل'
 
               Lbl_DBPath_LDF.Text DBName
                
'وضع اسم و ملف الـ mdf في ليبل اخر'
 
               Lbl_DBPath_MDF.Text openfd.FileName
                
'رسالة تاكد من عمل الاتاش'
 
               If MessageBox.Show("Are You Sure Attach Database File : " openfd.FileName"Attach Database"MessageBoxButtons.YesNo) = DialogResult.Yes Then
                    
'عمل شرط في حال نجاح عملية الاتاش'
 
                   If (Cls.AttachDatabaseName(SafeFileNameopenfd.FileNameDBName) = TrueThen
                        
'اعادة تعبئة الداتاغريدفيو باسماء قواعد البيانات'
 
                       dataGridView1.DataSource Cls.FindDatabaseByName(Txt_DBName.Text)
 
                   Else
                        
'اعادة تعبئة الداتاغريدفيو باسماء قواعد البيانات'
 
                       dataGridView1.DataSource Cls.FindDatabaseByName(Txt_DBName.Text)
 
                   End If
 
               End If
 
           End If
 
       End If
 
   End Sub 

شرح كود البحث عن قاعدة البيانات في السرفير :

PHP كود :
   ''' <summary>
    ''' 
كود التاكد من وجود قاعدة البيانات في السيرفير
    
''' </summary>
    ''' 
<param name="YourDbName">اسم قاعدة البيانات</param>
 
   ''' <returns>الفودة في قيمة True في حال وجد قاعدة البيانات اي لا يجب عمل اتاش او  العكس</returns>
    ''' 
<remarks>شركة العاصم للبرمجيات https://asemshahen5.blogspot.com/ </remarks>
 
   Public Function GetAttachDatabaseName(YourDbName As String) As Boolean
        
'تعريف داتا تيبل'
 
       Dim DT As New DataTable
        
'كود نص الاتصال الخاص بالبحث في اسماء قواعد البيانات'
 
       Dim SqlConnection1 As New SqlClient.SqlConnection("Data Source=(Local)\sqlexpress" &
 
                ";Initial Catalog=tempdb;Integrated Security=SSPI;")
 
       'استعلام خاص بالبحث عن اسم قاعدة البيانات في السيرفير'
 
       Dim Str As String "Select DISTINCT name from master.dbo.sysdatabases where name Like '" YourDbName &
 
               "' and has_dbaccess(Name) = 1 "
 
       'تعريف داتا ادبتر مع وضع كود الاستعلام و الاتصال'
 
       Dim ADP As New SqlClient.SqlDataAdapter(StrSqlConnection1)
 
       'تفريغ الداتا تيبل'
 
       DT.Clear()
 
       'تعبئة الداتا تيبل من نتيجة الاستعلام'
 
       ADP.Fill(DT)
 
       'تعريف متغير يحمل نتيجة الاستعلام'
 
       Dim i As Integer DT.Rows.Count
        
'في حال كان المتغير 0 يعني قاعدة البيانات غير متصلة'
 
       If i 0 Then
            MessageBox
.Show(" قاعدة البيانات  'قاعدة بيانات البرنامج'" +
 
                   "غير متصلة بالسرفر جارى عمل الاتصال"Environment.MachineName,
 
                   MessageBoxButtons.OKMessageBoxIcon.InformationMessageBoxDefaultButton.Button1,
 
                   MessageBoxOptions.RtlReading)
 
           'العودة بقيمة False في حال عدم وجود لاسم قاعدة البيانات في السيرفير
            Return False
        Else
            '
العودة بقيمة True في حال اتصال قاعدة البيانات في السيرفير'
            Return True
        End If
    End Function 
الرد }}}
تم الشكر بواسطة:
#13
تعليم تنصيب سيكول سيرفير اكسبريس :


الرد }}}
تم الشكر بواسطة:
#14
(26-11-19, 02:49 PM)asemshahen5 كتب : لعمل اتاش استخدم اسم قاعدة البيانات في نص الاتصال ماستر اي يوجد نص اتصال خاص بعمل الاتاش ليس له علاقة بنص الاتصال الخاص بقاعدة بيانات البرنامج .

هذا الكود مشروح :

PHP كود :
   ''' <summary>
    ''' 
عمل اتاش لقاعدة البيانات
    
''' </summary>
    ''' 
<param name="MYDBNAME">اسم قاعدة البيانات</param>
 
   ''' <param name="f1lepathprimary">مكان و اسم ملف mdf</param>
    ''' 
<param name="f1lepathlog">مكان و اسم الملف log</param>
 
   ''' <returns>العودة بقيمة True في حال النجاح و قيمة False في حال الفشل</returns>
    ''' 
<remarks>شركة العاصم للبرمجيات https://asemshahen5.blogspot.com/ </remarks>
 
   Public Function AttachDatabaseName(MYDBNAME As Stringf1lepathprimary As Stringf1lepathlog As String) As Boolean
        Try
            
'كود الاتصال الخاص بعملية الاتاش'
 
           Dim SqlConnection1 As New SqlClient.SqlConnection("Data Source=(Local)\sqlexpress " &
 
                    ";Initial Catalog=tempdb;Integrated Security=SSPI;")
 
           'تعريف سيكول كوماند'
 
           Dim CMD As New SqlClient.SqlCommand()
 
           'نوع الكوماند تيكست اي استعلام'
 
           CMD.CommandType CommandType.Text
            
'تحديد كود الاتصال بنص الاتصال الذي في الاعلى'
 
           CMD.Connection SqlConnection1
            If SqlConnection1
.State ConnectionState.Closed Then SqlConnection1.Open()
 
           'الاستعلام الخاص بعمل الاتاش'
 
           CMD.CommandText "sp_attach_db " MYDBNAME ",'" f1lepathprimary "'" ",'" f1lepathlog "'"
 
           'الاستعلام الخاص بعمل الاتاش'
 
           '' OR CMD.CommandText "CREATE DATABASE " MYDBNAME " ON (FILENAME = '" f1lepath "')FOR ATTACH"
 
           'تنفيذ الاستعلام'
 
           CMD.ExecuteNonQuery()
 
           'اغلاق الاتصال'
 
           SqlConnection1.Close()
 
           SqlConnection1.Dispose()
 
           'رسالة تخبر بنجاح عملية الاتاش'
 
           MessageBox.Show("تم انشاء اتصال  قاعدة البيانات  بالسرفر ""Attach Database",
 
                   MessageBoxButtons.OKMessageBoxIcon.InformationMessageBoxDefaultButton.Button2,
 
                   MessageBoxOptions.RtlReading)
 
           'العودة بقيمة True'
 
           Return True
        Catch ex 
As Exception
            
'رسالة تفيد بفشل عملية الاتاش و سبب الخطء'
 
           MessageBox.Show(ex.Message vbNewLine "فشل البرنامج فى انشاء اتصال  بقاعدة البيانات  بالسرفر",
 
                              "Attach Database"MessageBoxButtons.OKMessageBoxIcon.Information,
 
                              MessageBoxDefaultButton.Button2MessageBoxOptions.RtlReading)
 
           'العودة بقيمة False'
 
           Return False
        End 
Try
 
   End Function 

شرح كود الاستدعاء الخاص بالزر :

PHP كود :
   'كود الاستدعاء الخاص بعملية الاتاش في زر'
 
   Private Sub BtnAttachDatabase_Click(sender As ObjectAs EventArgsHandles BtnAttachDatabase.Click
        
'تعريف متغير صندوق حوار فتح'
 
       Dim openfd As New OpenFileDialog
        
'الفلتر على نوع قاعدة البيانات mdf'
 
       openfd.Filter "Sql Server Database(*.mdf)|*.mdf"
 
       'عنوان صندوق الحوار فتح'
 
       openfd.Title "Attach Database"
 
       'التاكد من اختيار موافق لتلافي حصول خطا'
 
       If openfd.ShowDialog DialogResult.OK Then
            
'التاكد من عدم وجود قاعدة البيانات'
 
           If (Cls.GetAttachDatabaseName(Txt_DBName.Text) = FalseThen
                
'تعريف متغير نصي فيه اسم قاعدة البيانات'
 
               Dim SafeFileName As String openfd.SafeFileName
                
'حذف لاحقة اسم قاعدة البيانات'
 
               SafeFileName SafeFileName.Replace(".mdf""")
 
               'تعريف متغير نصي فيه اسم و عنوان قاعدة البيانات'
 
               Dim DBName As String openfd.FileName
                
'استبدال لاحقة mdf من اسم و عنوان قاعدة البيانات بلاحقة log'
 
               DBName DBName.Replace(".mdf""_log.ldf")
 
               'وضع اسم ومسار ملف اللوغ في ليبل'
 
               Lbl_DBPath_LDF.Text DBName
                
'وضع اسم و ملف الـ mdf في ليبل اخر'
 
               Lbl_DBPath_MDF.Text openfd.FileName
                
'رسالة تاكد من عمل الاتاش'
 
               If MessageBox.Show("Are You Sure Attach Database File : " openfd.FileName"Attach Database"MessageBoxButtons.YesNo) = DialogResult.Yes Then
                    
'عمل شرط في حال نجاح عملية الاتاش'
 
                   If (Cls.AttachDatabaseName(SafeFileNameopenfd.FileNameDBName) = TrueThen
                        
'اعادة تعبئة الداتاغريدفيو باسماء قواعد البيانات'
 
                       dataGridView1.DataSource Cls.FindDatabaseByName(Txt_DBName.Text)
 
                   Else
                        
'اعادة تعبئة الداتاغريدفيو باسماء قواعد البيانات'
 
                       dataGridView1.DataSource Cls.FindDatabaseByName(Txt_DBName.Text)
 
                   End If
 
               End If
 
           End If
 
       End If
 
   End Sub 

شرح كود البحث عن قاعدة البيانات في السرفير :

PHP كود :
   ''' <summary>
    ''' 
كود التاكد من وجود قاعدة البيانات في السيرفير
    
''' </summary>
    ''' 
<param name="YourDbName">اسم قاعدة البيانات</param>
 
   ''' <returns>الفودة في قيمة True في حال وجد قاعدة البيانات اي لا يجب عمل اتاش او  العكس</returns>
    ''' 
<remarks>شركة العاصم للبرمجيات https://asemshahen5.blogspot.com/ </remarks>
 
   Public Function GetAttachDatabaseName(YourDbName As String) As Boolean
        
'تعريف داتا تيبل'
 
       Dim DT As New DataTable
        
'كود نص الاتصال الخاص بالبحث في اسماء قواعد البيانات'
 
       Dim SqlConnection1 As New SqlClient.SqlConnection("Data Source=(Local)\sqlexpress" &
 
                ";Initial Catalog=tempdb;Integrated Security=SSPI;")
 
       'استعلام خاص بالبحث عن اسم قاعدة البيانات في السيرفير'
 
       Dim Str As String "Select DISTINCT name from master.dbo.sysdatabases where name Like '" YourDbName &
 
               "' and has_dbaccess(Name) = 1 "
 
       'تعريف داتا ادبتر مع وضع كود الاستعلام و الاتصال'
 
       Dim ADP As New SqlClient.SqlDataAdapter(StrSqlConnection1)
 
       'تفريغ الداتا تيبل'
 
       DT.Clear()
 
       'تعبئة الداتا تيبل من نتيجة الاستعلام'
 
       ADP.Fill(DT)
 
       'تعريف متغير يحمل نتيجة الاستعلام'
 
       Dim i As Integer DT.Rows.Count
        
'في حال كان المتغير 0 يعني قاعدة البيانات غير متصلة'
 
       If i 0 Then
            MessageBox
.Show(" قاعدة البيانات  'قاعدة بيانات البرنامج'" +
 
                   "غير متصلة بالسرفر جارى عمل الاتصال"Environment.MachineName,
 
                   MessageBoxButtons.OKMessageBoxIcon.InformationMessageBoxDefaultButton.Button1,
 
                   MessageBoxOptions.RtlReading)
 
           'العودة بقيمة False في حال عدم وجود لاسم قاعدة البيانات في السيرفير
            Return False
        Else
            '
العودة بقيمة True في حال اتصال قاعدة البيانات في السيرفير'
            Return True
        End If
    End Function 


اخي انا اريد عند فتح البرنامج لاول مره.. 
يقوم البرنامج بعمل attach لقاعدة البيانات تلقائيا و الاتصال بها..
الرد }}}
تم الشكر بواسطة:
#15
ضع هذا الكود :

PHP كود :
''ضع هذا السب في الفورم الذي يعمل عند بدء تشغيل البرنامج :

    Private 
Sub FormXT_Load(DatabaseNameForAttach As String)
 
       Dim openfd As New OpenFileDialog
        openfd
.Filter "Sql Server Database(*.mdf)|*.mdf"
 
       openfd.Title "Attach Database"
 
       If (Cls.GetAttachDatabaseName(DatabaseNameForAttach) = FalseThen
            If openfd
.ShowDialog DialogResult.OK Then
                Dim SafeFileName 
As String openfd.SafeFileName
                SafeFileName 
SafeFileName.Replace(".mdf""")
 
               Dim DBName As String openfd.FileName
                DBName 
DBName.Replace(".mdf""_log.ldf")
 
               If MessageBox.Show("Are You Sure Attach Database File : " openfd.FileName"Attach Database"MessageBoxButtons.YesNo) = DialogResult.Yes Then
                    If 
(Cls.AttachDatabaseName(SafeFileNameopenfd.FileNameDBName) = TrueThen
                        My
.Settings.MdfFile openfd.FileName
                        My
.Settings.LdfFile DBName
                        My
.Settings.Save()
 
                   Else
                        My
.Settings.MdfFile ""
 
                       My.Settings.LdfFile ""
 
                       My.Settings.Save()
 
                   End If
 
               End If
 
           End If
 
       End If
 
   End Sub

'في السيتنغ عرف متغيرين باسم :
'
1MdfFile

'2- LdfFile

'
و في حدث تحميل الفورم ضع الكود التالي :

FormXT_Load("ضع هنا اسم قاعدة البيانات الخاصة بالبرنامج")

'لا تنسى إضافة الكلاس AttachDatabaseNameCls الى برنامجك .

'
موفق ان شاء الله 
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] طريقة توسيط النص داخل اداة comboBox سمير1404 7 3,854 24-08-25, 01:01 PM
آخر رد: أبو خالد الشكري
  تصدير البيانات إلى ملف RTF مصمم هاوي 4 820 15-08-25, 04:13 PM
آخر رد: أبو خالد الشكري
  [VB.NET] ما هو أفضل موقع استضافة لقواعد البيانات MSSQL ؟ mmaalmesry 0 795 16-07-25, 10:45 PM
آخر رد: mmaalmesry
  مساعدة في كيفية ترحيل البيانات من داتا قريدفيو إلى داتا قريدفيو في فيجوال بيسك ahmedfa71 13 2,210 09-07-25, 11:24 PM
آخر رد: أبو خالد الشكري
  مشكلة في حفظ البيانات مصمم هاوي 2 1,019 30-06-25, 08:51 AM
آخر رد: مصمم هاوي
  بطء في جلب البيانات مصمم هاوي 9 993 08-05-25, 07:51 AM
آخر رد: مصمم هاوي
  [Acces2007] مشكلة ملف قاعدة بيانات access للقراءة فقط mmaalmesry 11 1,450 29-04-25, 08:55 PM
آخر رد: mmaalmesry
  تعديل كود تحديث البيانات مصمم هاوي 1 780 26-04-25, 06:07 PM
آخر رد: مصمم هاوي
Photo لايمكن تعرف على تنسيق قاعدة البيانات الدريساوي 2 696 26-04-25, 12:24 AM
آخر رد: الدريساوي
  مساعدة في طريقة تحميل الفيديوهات المخزنة في قاعدة البيانات foad8920 0 659 24-04-25, 12:58 PM
آخر رد: foad8920

التنقل السريع :


يقوم بقرائة الموضوع: