通过ADOX.Table创建数据库列

时间:2018-07-28 10:10:18

标签: vb.net visual-studio-2012 adox

我正在尝试在现有的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 个答案:

答案 0 :(得分:-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

如果要独立添加列,请Add columns to an Access (Jet) table from .NET