'Connect to the local, default instance of SQL Server.
' Set Server connection information
SQLServer = New Server(_ServerConnection)
' Connect to server
_ServerConnection.Connect()
' Set Database
Database = SQLServer.Databases(_strDatabaseName)
' Check if database Is Accessible
If Database.IsAccessible = True Then
' Check to ensure table does not already exist
If Database.Tables.Contains(_strTableName) = False Then
' Define table name within specified database
Table = New Smo.Table(Database, _strTableName)
' Check if index already exists
If Table.Indexes.Contains("PK_" & _strTableName) = False Then
' Drop index
Table.Indexes("PK_" & _strTableName).Drop()
End If
Index = New Index(Table, "PK_" & _strTableName)
Table.Indexes.Add(Index)
' Loop though defined table structure
For Each Row As DataRow In _dtTableStructure.Rows
' Column Name
Column = New Column(Table, Row.Item("ColumnName").ToString)
' DataType
Select Case CType(Row.Item("DataTypeID"), _Global.eDataTypes)
Case _Global.eDataTypes.bigint
Column.DataType = DataType.BigInt
Case _Global.eDataTypes.int
Column.DataType = DataType.Int
Case _Global.eDataTypes.smallint
Column.DataType = DataType.SmallInt
Case _Global.eDataTypes.tinyint
Column.DataType = DataType.TinyInt
Case _Global.eDataTypes.bit
Column.DataType = DataType.Bit
Case _Global.eDataTypes.decimal
Column.DataType = DataType.Decimal(0, 18)
Case _Global.eDataTypes.numeric
Column.DataType = DataType.Numeric(0, 18)
Case _Global.eDataTypes.money
Column.DataType = DataType.Money
Case _Global.eDataTypes.smallmoney
Column.DataType = DataType.SmallMoney
Case _Global.eDataTypes.float
Column.DataType = DataType.Float
Case _Global.eDataTypes.real
Column.DataType = DataType.Real
Case _Global.eDataTypes.datetime
Column.DataType = DataType.DateTime
Case _Global.eDataTypes.smalldatetime
Column.DataType = DataType.SmallDateTime
Case _Global.eDataTypes.char
Column.DataType = DataType.Char(Row.Item("Length").ToString)
Case _Global.eDataTypes.varchar
Column.DataType = DataType.VarChar(Row.Item("Length").ToString)
Case _Global.eDataTypes.text
Column.DataType = DataType.Text
Case _Global.eDataTypes.nchar
Column.DataType = DataType.NChar(Row.Item("Length").ToString)
Case _Global.eDataTypes.nvarchar
Column.DataType = DataType.NVarChar(Row.Item("Length").ToString)
Case _Global.eDataTypes.ntext
Column.DataType = DataType.NText
Case _Global.eDataTypes.binary
Column.DataType = DataType.Binary(Row.Item("Length").ToString)
Case _Global.eDataTypes.varbinary
Column.DataType = DataType.VarBinary(Row.Item("Length").ToString)
Case _Global.eDataTypes.image
Column.DataType = DataType.Image
Case _Global.eDataTypes.sql_variant
Column.DataType = DataType.Variant
Case _Global.eDataTypes.timestamp
Column.DataType = DataType.Timestamp
Case _Global.eDataTypes.uniqueidentifier
Column.DataType = DataType.UniqueIdentifier
End Select
' IsNullable
Column.Nullable = CType(Row.Item("AllowNulls"), Boolean)
Table.Columns.Add(Column)
' Primary Key
If CType(Row.Item("PrimaryKey"), Boolean) = True Then
' Add the primary key index
Index.IndexedColumns.Add(New IndexedColumn(Index, Column.Name))
Index.IsClustered = True
Index.IsUnique = True
Index.IndexKeyType = IndexKeyType.DriPrimaryKey
End If
Next
Try
' Attempt to create table
Table.Create()
' Success
booSuccess = True
Catch ex As Exception
' Set ExceptionMessage member variable
_objException = ex
End Try
Else
Dim ex As New Exception("test")
Throw ex
End If
End If