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 specific column of a DataTable as PrimaryKey, after the DataTable is already filled with data?
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");
As long as the values in the column are unique
table.PrimaryKey = new DataColumn[] { table.Columns["Id"] };
adjust for your column names.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With