【问题标题】:Can you populate a Dataset with User Input?您可以使用用户输入填充数据集吗?
【发布时间】:2016-05-18 23:54:03
【问题描述】:

我需要将用户输入(从控制台输入)存储到 Visual Basic 中的数据集。这可能吗?我似乎无法在网上找到任何有关这样做的信息。如果有人能指出我正确的方向,那就太棒了!

编辑:我的表中的列是名为 Person 的表中的 FirstName、LastName、State 等。 控制台应用程序的启动:“输入名字:”,然后“输入姓氏:”,然后等等。

用户输入的值存储在特定变量中,例如。 firstName,lastName,所以我想知道如何将这些变量放入数据集中。

谢谢。

【问题讨论】:

    标签: vb.net dataset


    【解决方案1】:

    这是一个简短的基本示例。很可能它不会直接满足您的需求,因为您可能希望使用类型化数据集等。由于您的问题并未指定有关您可能已经尝试过的代码的问题,因此我将提供这些。

    Option Strict On
    
    Module Module1
    
        Sub Main()    
            Dim ds As DataSet = CreateNewDataSet()
            Dim entries As New List(Of String())
            For i = 1 To 3
                Console.WriteLine($"Enter first column value for row {i.ToString}:")
                Dim input1 As String = Console.ReadLine()
                Console.WriteLine($"Enter second column value for row {i.ToString}:")
                Dim input2 As String = Console.ReadLine()
                entries.Add({input1, input2})
            Next    
            entries.ForEach(Sub(x) ds.Tables(0).Rows.Add(x))    
        End Sub
    
        Private Function CreateNewDataSet() As DataSet
            Dim ds As New DataSet()
            Dim dt As New DataTable()
            Dim col1 As New DataColumn("Column1")
            Dim col2 As New DataColumn("Column2")
            dt.Columns.AddRange({col1, col2})
            ds.Tables.Add(dt)
            Return ds
        End Function
    End Module
    

    【讨论】:

    • 这就是我要找的。非常感谢!干杯! :-)
    【解决方案2】:

    如果您不知道列名,可以使用反射来获取输入对象的属性名称。您还可以使用属性来过滤属性。使用DataTable.LoadDataRow 方法将数组加载为行。 这是如何动态执行此操作的示例:

    Dim input As New List(Of Object)
    For i = 0 To 5  
        Console.WriteLine("enter your first name and last name:")  
        input.Add(New With {.First = Console.ReadLine, .Last = Console.ReadLine})  
    Next  
    
    Dim myData As New DataSet  
    Dim table = myData.Tables.Add()
    table.Columns.AddRange(input.First.GetType.GetProperties.Select(Function(p) New DataColumn(p.Name)).ToArray)
    input.ForEach(Function(o) table.LoadDataRow(o.GetType.GetProperties.Select(Function(p) p.GetValue(o, Nothing)).ToArray, False))  
    
    For Each row In table.Rows  
        Console.WriteLine("first:{0} ,Last:{1}", row(0), row(1))  
    Next
    

    【讨论】:

    • 当我尝试显示数据集中的值时,名字显示为空白。我也收到一个错误:“找不到第 1 列”
    • @TimmyHoHoo 也许你错过了什么。请复制并粘贴上面的代码,然后重试。
    猜你喜欢
    • 2019-03-14
    • 1970-01-01
    • 2010-10-08
    • 2018-04-10
    • 1970-01-01
    • 2021-12-19
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多