Die gezeigte Funktion kann dazu benutzt werden, um die Struktur einer bestehenden SQL-Datentabelle zu ermitteln und diese in einer Datentabelle für weitere Verwendung zu speichern. Ich habe sie unter SQLServer 2008R2 getestet und benutzt. Es wird vorausgesetzt, dass die SQL-Verbindung besteht und die Quelltabelle in der Datenbank existiert. Imports System.Data.SqlClient ... ''' <summary> ''' Erstellen einer Datatable mit der Struktur einer SQL-Tabelle als Inhalt ''' </summary> ''' <param name="conn">geöffnetes SQL-Connection Object</param> ''' <param name="tabNameSrc">Name der Quelltabelle</param> ''' <param name="tabNameDest">Name der Zieltabelle im DataTable Objekt</param> ''' <param name="auswahlFlag">Flag für die Arbeitsweise true|false</param> ''' <returns>Zieltabelle mit der Struktur</returns> ''' <remarks>Es gibt zwei Arbeitsweisen der Funktion: ''' auswahlFlag=True: Es werden alle Columnnamen der SQL-Tabelle ermittelt, ''' die kein Primärschlüssel und nicht berechnete Spalten sind. ''' auswahlFlag=False: Es werden alle Columns mit Name, Datentyp, maximale Zeichenzahl, ''' numerische Genauigkeit, numerische Größe ermittelt.</remarks> Public Function TableStructureTable(ByVal conn As SqlConnection, _ ByVal tabNameSrc As String, _ ByVal tabNameDest As String, _ Optional ByVal auswahlFlag As Boolean = True) As DataTable Dim sSQL As String If auswahlFlag Then sSQL = "SELECT a.name as column_name " & _ "FROM sys.columns AS a " & _ "INNER JOIN sys.all_objects AS b ON a.object_id = b.object_id " & _ "WHERE (a.object_id > 100) AND (b.type_desc = 'USER_TABLE') AND " & _ "(b.name LIKE @TableName) AND " & _ "(a.is_computed = 'false') AND (a.is_identity = 'false')" Else sSQL = "SELECT column_name, data_type, character_maximum_length, " & _ "numeric_precision, numeric_scale " & _ "FROM information_schema.COLUMNS " & _ "WHERE table_name LIKE @TableName " & _ "ORDER BY ordinal_position" End If Dim cmd As New SqlCommand(sSQL, conn) cmd.Parameters.AddWithValue("@TableName", tabNameSrc) Dim adp As New SqlDataAdapter(cmd) Dim struct As New DataTable(tabNameDest) Try With adp .Fill(struct) .Dispose() End With Catch ex As Exception MessageBox.Show(ex.Message.ToString, "FEHLER", _ MessageBoxButtons.OK, MessageBoxIcon.Error) Return Nothing End Try Return struct End Function Aufrufbeispiel: Dim tempT As DataTable = _ TableStructureTable(myConnection, "mySourceTableName", "tempStructure") ' Inhalt des DataTable-Objekts in einem DataGridView anzeigen DataGridView1.DataSource = tempT Dieser Tipp wurde bereits 12.580 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
sevWizard für VB5/6 Professionelle Assistenten im Handumdrehen Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |