Создание столбца базы данных через ADOX.Table

Я пытаюсь создать столбцы в существующем access database, database уже был создан, он содержит пустую таблицу с именем "table1", но не содержит columnsТеперь я хочу добавить в него столбец. Но это приводит к некоторой ошибке.

Аргументы имеют неправильный тип, находятся за пределами допустимого диапазона или конфликтуют друг с другом.

Imports ADOX
Imports ADOX.DataTypeEnum
Imports ADOX.KeyTypeEnum
Imports System.Data.OleDb
Imports System.Data.SqlClient

 Dim database_location As String = Application.UserAppDataPath

    Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click
           insert_columns("DB3", "table1", "Key", adInteger, True, True)
        End Sub

    Function insert_columns(ByRef Database_file_name As String, ByRef table_name As String, ByRef column_name As String, ByRef data_type As ADOX.DataTypeEnum, Optional ByRef primary_key As Boolean = False, Optional ByRef auto_increment As Boolean = False)

            Dim DB_file_name As String = "\" & Database_file_name & ".mdb"
            Dim catDB As ADOX.Catalog
            Dim tblNew As ADOX.Table
            ' Dim catstring As String

            'Try
            catDB = New ADOX.Catalog
            ' Open the catalog.
            catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & database_location & DB_file_name

            tblNew = New ADOX.Table
            ' Create a new Table object.
            With tblNew
                .Name = table_name
                .ParentCatalog = catDB
                ' Create fields and append them to the
                ' Columns collection of the new Table object.

                With .Columns
                    .Append(column_name, data_type)

                    If auto_increment = True Then
                        .Item(column_name).Properties("AutoIncrement").Value = True
                    End If

                    If primary_key = True Then
                        tblNew.Keys.Append("PrimaryKey", KeyTypeEnum.adKeyPrimary, column_name)
                    End If

                End With

            End With

            ' Add the new Table to the Tables collection of the database.
            catDB.Tables.Append(tblNew)

            'clean up
            catDB = Nothing
            tblNew = Nothing

            Return True

            'Catch ex As Exception
            '    error_entry("Column creation error. Database name: " & DB_file_name & " Column Name: " & column_name & vbNewLine & ex.Message)
            '    Return False
            'End Try
        End Function

1 ответ

Argh, не правильно прочитал, что вы используете Adox. Я оставлю ответ на всякий случай.

Я использовал ACE, но он должен быть таким же:

  Using cmd As New OleDb.OleDbCommand() 'Creates table and columns in it
        cmd.Connection = <your connection>
        cmd.CommandText = "CREATE TABLE [" & <table_name> & "]([<column_name>] <COLUMN TYPE>, ...repeat)" ' so it looks like "CREATE TABLE [NewTable]([Column1] TEXT, [Columnnnnz2] INTEGER)
        cmd.ExecuteNonQuery()
  End Using

Если вы хотите добавить столбцы независимо, добавьте столбцы в таблицу Access (Jet) из.NET

Другие вопросы по тегам