当前位置:  开发笔记 > 编程语言 > 正文

如何在创建后将VB.NET DataTable列定义为主键

如何解决《如何在创建后将VB.NETDataTable列定义为主键》经验,为你挑选了3个好方法。

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



1> Kleinux..:

只要列中的值是唯一的

table.PrimaryKey = new DataColumn[] { table.Columns["Id"] };

调整列名称.



2> Matt Roy..:

这是VB中的一行代码(问题是"使用VB.NET").此示例使用索引的2列:

table.PrimaryKey = New DataColumn() {table.Columns("column1"), _
                                     table.Columns("column2")}

更新:这是关于如何使用这2列索引查找行的另一个单行:

table.Rows.Find(New Object() {value1, value2}) '<- DataRow returned



3> Rob..:

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

    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");

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有