منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : تعبئة كومبو بوكس بقواعد البيانات الموجوده علي السيرفر
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
انشأت مشروع بواسطه فيجوال بيسك و قاعدة بيانات sqlserver و الحمد لله شغال تمام..
ولكن اريد عمل كومبو بوكس يتم عرض فيه اسماء قواعد البيانات الموجوده علي السيرفر.. 
ارجو المساعده..
PHP كود :
Dim cn As New SqlConnection("Server=" ComboServer.Text ";database=master;integrated security=true")
 
               Dim da As New SqlDataAdapter("select name from sysdatabases"cn'sys.databases
                Dim dt As New DataTable
                da.Fill(dt)
                For i As Integer = 0 To dt.Rows.Count - 1
                    ComboDatabase.Items.Add(dt.Rows(i)("Name").ToString)
                Next 
(16-12-19, 08:28 PM)asemshahen5 كتب : [ -> ]
PHP كود :
Dim cn As New SqlConnection("Server=" ComboServer.Text ";database=master;integrated security=true")
 
               Dim da As New SqlDataAdapter("select name from sysdatabases"cn'sys.databases
                Dim dt As New DataTable
                da.Fill(dt)
                For i As Integer = 0 To dt.Rows.Count - 1
                    ComboDatabase.Items.Add(dt.Rows(i)("Name").ToString)
                Next 

شكرا اخي ?
(17-12-19, 02:27 PM)Mustafa Shaker كتب : [ -> ]
(16-12-19, 08:28 PM)asemshahen5 كتب : [ -> ]
PHP كود :
Dim cn As New SqlConnection("Server=" ComboServer.Text ";database=master;integrated security=true")
 
               Dim da As New SqlDataAdapter("select name from sysdatabases"cn'sys.databases
                Dim dt As New DataTable
                da.Fill(dt)
                For i As Integer = 0 To dt.Rows.Count - 1
                    ComboDatabase.Items.Add(dt.Rows(i)("Name").ToString)
                Next 

عندي كمان جهاز عاوز اخليه يتصل بالسيرفر.. انا حاليا بضيف user في sql managment و اتصل عن طريق اليوزر دا.. 
هل في طريقه اقدر اربط جهاز علي السيرفر بدون تثبيت sql managment 
غير كود الاتصال كالتالي :

PHP كود :
Dim cn As New SqlConnection("Server =192.168.1.2;database=master;integrated security=false;User ID=UserName;Password=123456789"

فقط غير رقم الايبي و اسم المستخدم و كلمة المرور .

هذا المثال به طريقة عمل نافذة لإعدادات السيرفير و حفظ معلومتها بالريجستري مشفرة .

سورس كود برنامج IT للعهدة والمستخدمين والاجهزة .
مشكور على الكود الرائع
لتنفيذ هذه المهمة، تحتاج إلى الاستفادة من مكتبة SqlClient في .NET لتحديد السيرفرات وقواعد البيانات. هنا شرح تفصيلي مع كود عملي:

الخطوات:
1. تعبئة السيرفرات في
كود :
ComboBox
الأول:
  • يمكن استخدام الفئة SqlDataSourceEnumerator للحصول على قائمة بأسماء السيرفرات المثبتة على الجهاز.
2. تعبئة قواعد البيانات في
كود :
ComboBox
الثاني:
  • بعد اختيار السيرفر من
    ComboBox
  • الأول، يمكن استخدام اتصال إلى السيرفر لاسترداد قائمة قواعد البيانات باستخدام استعلام SQL.

الكود:
vb
نسخ الكود
كود :
Imports System.Data.Sql
Imports System.Data.SqlClient

Public Class Form1
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       ' تعبئة السيرفرات عند تحميل الشاشة
       FillServers()
   End Sub

   ' تعبئة السيرفرات في ComboBox الأول
   Private Sub FillServers()
       Try
           Dim serversTable As DataTable = SqlDataSourceEnumerator.Instance.GetDataSources()
           ComboBox1.Items.Clear()
           For Each row As DataRow In serversTable.Rows
               Dim serverName As String = row("ServerName").ToString()
               Dim instanceName As String = If(row("InstanceName").ToString() <> "", "\" & row("InstanceName").ToString(), "")
               ComboBox1.Items.Add(serverName & instanceName)
           Next
       Catch ex As Exception
           MessageBox.Show("خطأ في الحصول على السيرفرات: " & ex.Message)
       End Try
   End Sub

   ' حدث اختيار السيرفر من ComboBox الأول
   Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
       Dim selectedServer As String = ComboBox1.SelectedItem.ToString()
       FillDatabases(selectedServer)
   End Sub

   ' تعبئة قواعد البيانات في ComboBox الثاني
   Private Sub FillDatabases(serverName As String)
       Try
           Dim connectionString As String = $"Data Source={serverName};Integrated Security=True;"
           Using connection As New SqlConnection(connectionString)
               connection.Open()

               ' استعلام للحصول على قواعد البيانات
               Dim cmd As New SqlCommand("SELECT name FROM sys.databases WHERE state = 0", connection)
               Dim reader As SqlDataReader = cmd.ExecuteReader()

               ComboBox2.Items.Clear()
               While reader.Read()
                   ComboBox2.Items.Add(reader("name").ToString())
               End While

               reader.Close()
           End Using
       Catch ex As Exception
           MessageBox.Show("خطأ في الحصول على قواعد البيانات: " & ex.Message)
       End Try
   End Sub
End Class

الشرح:
  1. تعبئة السيرفرات (
    FillServers
  2. ):
    • الفئة SqlDataSourceEnumerator تقوم بإرجاع جدول يحتوي على أسماء السيرفرات المثبتة.
    • يتم دمج اسم السيرفر مع اسم المثيل (Instance Name) إن وجد.
  3. تعبئة قواعد البيانات (
    FillDatabases
  4. ):
    • يتم استخدام اتصال بـ SQL Server باستخدام Integrated Security لاسترداد قواعد البيانات.
    • يتم تشغيل استعلام على جدول النظام
      sys.databases
    • للحصول على أسماء قواعد البيانات التي في حالة نشطة.
  5. التفاعل مع
    ComboBox
  6. :
    • عند تغيير الاختيار في
      ComboBox1
    • (حدث
      SelectedIndexChanged
    • )، يتم تعبئة
      ComboBox2
    • بقواعد البيانات.

المخرجات:
  • عند تشغيل البرنامج:
      ComboBox1
    • يتم تعبئته تلقائيًا بأسماء السيرفرات.
    • عند اختيار سيرفر،
      ComboBox2
    • يُعرض أسماء قواعد البيانات الخاصة به.
ملاحظات:
  • يجب تشغيل البرنامج على جهاز يمكنه الوصول إلى السيرفرات المحلية.
  • إذا كنت بحاجة إلى مصادقة SQL (Username/Password)، يمكنك تعديل سلسلة الاتصال:
    vb
    نسخ الكود
    Dim connectionString As String = $"Data Source={serverName};User ID=YourUsername;Password=YourPassword;"
إذا احتجت أي توضيحات إضافية أو تعديلات، أنا جاهز! ?