How to define a VB.NET DataTable Column as primary key after creation

前端 未结 5 652
天命终不由人
天命终不由人 2021-02-08 22:40

I am importing Tables from a Oracle DataBase, using a VB.NET dataAdapter. I use the \"fill\" command to add the imported data to a DataSet. How is it possible to define a specif

5条回答
  •  無奈伤痛
    2021-02-08 22:59

    You can set the primary key of a table by:

        Dim table As New DataTable()
    
        table.Columns.Add(New DataColumn("MyColumn"))
    
        Dim primaryKey(1) As DataColumn
        primaryKey(1) = table.Columns("MyColumn")
        table.PrimaryKey = primaryKey
    

    To be able to use the primary key, you need to ensure that all values for the given column are unique.

    I primarily work in C# and have a couple of Extension methods I use to "tidy" the calls I need to make, which you might want to consider translating to VB and using:

        public static void SetPrimaryKey(this DataTable value, string columnName)
        {
            value.PrimaryKey = new DataColumn[] { value.Columns[columnName] };
        }
    
        public static DataRow FindByPrimaryKey(this DataTable value, object key)
        {
            return value.Rows.Find(key);
        }
    
        // I can then do:
    
        DataTable table = CallToRoutineThatGetsMyDataTable();
        table.SetPrimaryKey("PKColumnName");
        DataRow result = table.FindByPrimaryKey("valueToFindWith");
    

提交回复
热议问题