vb.net - 如何在创建后将 VB.NET DataTable Column 定义为主键

标签 vb.net datatable primary-key

我正在使用 VB.NET dataAdapter 从 Oracle 数据库导入表。我使用“fill”命令将导入的数据添加到数据集。在 DataTable 已经填充了数据之后,如何将 DataTable 的特定列定义为 PrimaryKey?

最佳答案

您可以通过以下方式设置表的主键:

    Dim table As New DataTable()

    table.Columns.Add(New DataColumn("MyColumn"))

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

为了能够使用主键,您需要确保给定列的所有值都是唯一的。

我主要在 C# 中工作,并且有几个扩展方法用于“整理”我需要进行的调用,您可能需要考虑将其转换为 VB 并使用:
    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");

关于vb.net - 如何在创建后将 VB.NET DataTable Column 定义为主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2470681/

相关文章:

vb.net - 在声明时将键/值添加到字典中

c# - 为什么我从 C# 到 VB 的转换不起作用?

mysql - 稍微更改了 MYSQL 数据库表,需要此查询像以前一样工作

javascript - Codeigniter:根据选择 ID 值更改数据表

sql-server - Visual Basic.net - BigInt?

asp.net - DataList 中的分页不起作用

c# - 数据表与 IEnumerable<T>

sql - super 键、候选键和主键

sql - NEWSEQUENTIALID 的可预测性如何?

mysql - 当名称已经明确时,是否有必要为 Country 表使用整数 ID?