Create primary key DataColumn : DataColumn « Database ADO.net « VB.Net






Create primary key DataColumn

  

Imports System.Data
Imports System.Windows.Forms

Public Class Form1
    Inherits System.Windows.Forms.Form

    Public Shared Sub Main()
        Application.Run(New Form1())
    End Sub
    Public Sub New()
        MyBase.New()
        Me.DataGrid1 = New System.Windows.Forms.DataGrid()
        CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).BeginInit()
        Me.SuspendLayout()
        '
        Me.DataGrid1.DataMember = ""
        Me.DataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText
        Me.DataGrid1.Location = New System.Drawing.Point(0, 8)
        Me.DataGrid1.Size = New System.Drawing.Size(432, 256)
        Me.DataGrid1.TabIndex = 0
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(440, 273)
        Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.DataGrid1})
        CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).EndInit()
        Me.ResumeLayout(False)

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        CreateCustomersTable()
    End Sub

    Private Sub dcConstructorsTest()
        Dim custTable As DataTable = New DataTable("Customers")
        Dim dtSet As DataSet = New DataSet()

        Dim myDataType As System.Type
        myDataType = System.Type.GetType("System.Int32")
        Dim priceCol As DataColumn = New DataColumn("Price", myDataType)
        priceCol.Caption = "Price"
        custTable.Columns.Add(priceCol)

        Dim qtCol As DataColumn = New DataColumn()
        qtCol.ColumnName = "Quantity"
        qtCol.DataType = System.Type.GetType("System.Int32")
        qtCol.Caption = "Quantity"
        custTable.Columns.Add(qtCol)

        Dim strExpr As String = "Price * Quantity"

        Dim totCol As DataColumn = New DataColumn("Total", myDataType, strExpr, MappingType.Attribute)
        totCol.Caption = "Total"
        custTable.Columns.Add(totCol)
        dtSet.Tables.Add(custTable)
        DataGrid1.SetDataBinding(dtSet, "Customers")
    End Sub

    Private Sub CreateCustTable()
        Dim custTable As DataTable = New DataTable("Customers")
        Dim IdCol As DataColumn = New DataColumn()
        IdCol.ColumnName = "ID"
        IdCol.DataType = Type.GetType("System.Int32")
        IdCol.ReadOnly = True
        IdCol.AllowDBNull = False
        IdCol.Unique = True
        IdCol.AutoIncrement = True
        IdCol.AutoIncrementSeed = 1
        IdCol.AutoIncrementStep = 1
        custTable.Columns.Add(IdCol)

        Dim nameCol As DataColumn = New DataColumn()
        nameCol.ColumnName = "Name"
        nameCol.DataType = Type.GetType("System.String")
        custTable.Columns.Add(nameCol)

        Dim addCol As DataColumn = New DataColumn()
        addCol.ColumnName = "Address"
        addCol.DataType = Type.GetType("System.String")
        custTable.Columns.Add(addCol)

        Dim dobCol As DataColumn = New DataColumn()
        dobCol.ColumnName = "DOB"
        dobCol.DataType = Type.GetType("System.DateTime")
        custTable.Columns.Add(dobCol)

        Dim fullTimeCol As DataColumn = New DataColumn()
        fullTimeCol.ColumnName = "VAR"
        fullTimeCol.DataType = Type.GetType("System.Boolean")
        custTable.Columns.Add(fullTimeCol)

        Dim PrimaryKeyColumns() As DataColumn = New DataColumn(1) {}
        PrimaryKeyColumns(0) = custTable.Columns("ID")
        custTable.PrimaryKey = PrimaryKeyColumns
        Dim ds As DataSet = New DataSet("Customers")
        ds.Tables.Add(custTable)
        dataGrid1.DataSource = ds.DefaultViewManager
    End Sub

    Private Sub CreateCustomersTable()
        Dim custTable As System.Data.DataTable = New DataTable("Customers")
        Dim dtColumn As DataColumn

        dtColumn = New DataColumn()
        dtColumn.DataType = System.Type.GetType("System.Int32")
        dtColumn.ColumnName = "id"
        dtColumn.Caption = "Cust ID"
        dtColumn.ReadOnly = True
        dtColumn.Unique = True

        custTable.Columns.Add(dtColumn)

        dtColumn = New DataColumn()
        dtColumn.DataType = System.Type.GetType("System.String")
        dtColumn.ColumnName = "Name"
        dtColumn.Caption = "Cust Name"
        dtColumn.AutoIncrement = False
        dtColumn.ReadOnly = False
        dtColumn.Unique = False

        custTable.Columns.Add(dtColumn)
        dtColumn = New DataColumn()
        dtColumn.DataType = System.Type.GetType("System.String")
        dtColumn.ColumnName = "Address"
        dtColumn.Caption = "Address"
        dtColumn.ReadOnly = False
        dtColumn.Unique = False

        custTable.Columns.Add(dtColumn)

        Dim PrimaryKeyColumns() As DataColumn = New DataColumn(1) {}
        PrimaryKeyColumns(0) = custTable.Columns("id")
        custTable.PrimaryKey = PrimaryKeyColumns

        Dim ds As DataSet = New DataSet("Customers")
        ds.Tables.Add(custTable)

        Dim row1 As DataRow = custTable.NewRow()
        row1("id") = 1001
        row1("Address") = "CA"
        row1("Name") = "A"
        custTable.Rows.Add(row1)
        Dim row2 As DataRow = custTable.NewRow()
        row2("id") = 1002
        row2("Name") = "R"
        row2("Address") = "CA"
        custTable.Rows.Add(row2)
        Dim row3 As DataRow = custTable.NewRow()
        row3("id") = 1003
        row3("Name") = "M "
        row3("Address") = "CA"
        custTable.Rows.Add(row3)
        MessageBox.Show(row2.RowState.ToString())
        row2.Delete()
        MessageBox.Show(row3.RowState.ToString())

        DataGrid1.DataSource = ds.DefaultViewManager
    End Sub

    Friend WithEvents DataGrid1 As System.Windows.Forms.DataGrid

End Class

   
    
  








Related examples in the same category

1.DataColumn Collection demo