Um existiert zu überprüfen, ob eine Spalte in einer Tabelle existiert in meinem Microsoft Access-Datenbank, schrieb ich diesen Code VB.net mit:Überprüfen Sie, ob Spalte in Datatable
Dim conCreate As New OleDb.OleDbConnection(strCnn)
conCreate.Open()
Dim dbSchemaData As DataTable = conCreate.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, "Data", "TABLE"})
conCreate.Close()
Dim row As DataRow
row = dbSchemaData.NewRow()
For arrItem As Integer = 0 To arrLine.Length - 1
If arrLine(arrItem) = "Image Filename with Full Path" And row.Table.Columns.Contains("Tif") = False Then
Dim cmdCol As New OleDb.OleDbCommand("ALTER TABLE [Data] ADD COLUMN [Tif] VARCHAR(255)", conCreate)
conCreate.Open()
cmdCol.ExecuteNonQuery()
conCreate.Close()
ElseIf arrLine(arrItem) = "Image side" And row.Table.Columns.Contains("Voorkant") = False Then
Dim cmdCol As New OleDb.OleDbCommand("ALTER TABLE [Data] ADD COLUMN [Voorkant] BIT", conCreate)
conCreate.Open()
cmdCol.ExecuteNonQuery()
conCreate.Close()
ElseIf arrLine(arrItem) = "Image size (bytes)" And row.Table.Columns.Contains("Bestandsgrootte") = False Then
Dim cmdCol As New OleDb.OleDbCommand("ALTER TABLE [Data] ADD COLUMN [Bestandsgrootte] NUMERIC", conCreate)
conCreate.Open()
cmdCol.ExecuteNonQuery()
conCreate.Close()
ElseIf row.Table.Columns.Contains(arrLine(arrItem)) = False Then
Dim cmdCol As New OleDb.OleDbCommand("ALTER TABLE [Data] ADD COLUMN [" & arrLine(arrItem) & "] VARCHAR(255)", conCreate)
conCreate.Open()
cmdCol.ExecuteNonQuery()
conCreate.Close()
End If
Next
aber läuft diese während zum Beispiel der ersten Spalte (mit dem Namen Tif) existiert bereits, sie versucht immer noch, sie hinzuzufügen und fährt fort, die Ausnahme 'System.Data.OleDb.OleDbException' in System.Data.dll zu geben ("Feld 'Tif' existiert bereits in Tabelle 'Data'."), stoppt die Schleife.
Jede Hilfe wäre willkommen!
Was ist die Ausnahme? – Jaxi
'System.Data.OleDb.OleDbException' in System.Data.dll ("Feld 'Tif' existiert bereits in Tabelle 'Data'.") –
Haben Sie den Debugger verwendet und in der Columns-Eigenschaft nachgesehen, welche Daten darin enthalten sind ? Möglicherweise wird die Columns-Eigenschaft nicht korrekt ausgefüllt. – Jaxi