تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] جلب أسماء الجداول لقاعدة بيانات
#1
السلام عليكم ورحمة الله وبركاته

كود :
con.open
dim dt=con.getschema("tables",{nothing,nothing,nothing}) 'هذا السطر
for each r in dt.rows
msgbox(r("table_name"))
next
con.close
الكود أعلاه يجلب أسماء الجداول لقاعدة بيانات و يضعها فى datatable و يعرضها

ولكن هناك مشكلة 

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

فأرجو الإفادة بطريقة أخرى لعرض أسماء الجداول

وشكرا
الرد }}}
تم الشكر بواسطة:
#2
هذا الامر يقوم باستدعاء قواعد البانات الموجودة بالسيرفر ويضعها في كومبوبوكس
بامكانك الاستفادة من الكود حسب ما تريد
كود :
Public Sub selectdata(comboserver As ComboBox, combodatabase As ComboBox)

       combodatabase.Items.Clear()

       Dim cn As New SqlConnection("server=" & comboserver.Text & "; database = master ; integrated security=true ")
       Dim da As New SqlDataAdapter("select name from sys.databases ", cn)
       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
   End Sub

وهذا امر لجلب اسماء الجداول من قاعدة البيانات
استفيد ايضا" من الكود

كود :
Public Sub BtnGetTable(combodata As ComboBox, listetable As DataGridView)

       dt.Clear()

       Dim serverconnection As ServerConnection = Nothing
       If combodata.Text = Nothing Then

           MessageBox.Show("you dont choose data base", "alert", MessageBoxButtons.OK, MessageBoxIcon.Warning)

           Exit Sub

       End If
       Dim objCn As New SqlConnection(connectionstring)
       serverconnection = New ServerConnection(objCn)
       Dim server As New Server(serverconnection)
       Dim objTables As TableCollection = server.Databases(DatabaseName).Tables
       If objTables.Count = 0 Then

           MessageBox.Show("no tables", "alert", MessageBoxButtons.OK, MessageBoxIcon.Warning)
           combodata.Focus()

       End If

       cmd = New SqlCommand("SELECT name as 'Name_Table' from dbo.sysobjects WHERE xtype ='u' ORDER BY Name", objCn)
       da = New SqlDataAdapter(cmd)

       da.Fill(dt)

       listetable.DataSource = dt

     
   End Sub
الرد }}}
تم الشكر بواسطة: Taha Okla , asmarsou , mmaalmesry , mmaalmesry , mmaalmesry
#3
جزاكم الله خيرا
و هل هذا الكود يصلح لقاعدة بيانات oledb أو access ؟ بعد إجراء بعض التعديلات طبعا ؟
الرد }}}
تم الشكر بواسطة:
#4
(04-01-23, 12:28 AM)mmaalmesry كتب : جزاكم الله خيرا
و هل هذا الكود يصلح لقاعدة بيانات oledb أو access ؟ بعد إجراء بعض التعديلات طبعا ؟

كود :
 Dim SchemaTable As DataTable

       'Connect to the database
       Dim conn As New System.Data.OleDb.OleDbConnection(ConnString)

       Try
           ListBox1.Items.Clear()

           conn.Open()

           'Get table and view names
           SchemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, Nothing})

           Dim int As Integer
           For int = 0 To SchemaTable.Rows.Count - 1
               If SchemaTable.Rows(int)!TABLE_TYPE.ToString = "TABLE" Then
                   'Add items to list box
                   ListBox1.Items.Add(SchemaTable.Rows(int)!TABLE_NAME.ToString())
               End If
           Next

       Catch ex As Exception
           MessageBox.Show(ex.Message.ToString(), "Data Load Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
       End Try

       conn.Close()
الرد }}}
تم الشكر بواسطة: asmarsou , OLED , mmaalmesry



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


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