0
存在列为了检查,如果在我的Microsoft Access数据库中的表中存在一列,我写了使用VB.net此代码:检查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
但运行此同时,例如第一列(名为Tif)已经存在,它仍会尝试添加它并继续在System.Data.dll中提供异常'System.Data.OleDb.OleDbException'(“表'数据'中已存在'字段'Tif'')。 ),停止循环。
任何帮助,将不胜感激!
有什么异常? – Jaxi
System.Data.dll中的'System.Data.OleDb.OleDbException'(“表'数据'中已存在'Tif'字段。”) –
您是否使用过调试器并查看了Columns属性以查看它包含的数据?可能是因为Columns属性没有正确填充。 – Jaxi