你能用用户输入填充数据集吗?
Can you populate a Dataset with User Input?
我需要将用户输入(从控制台输入)存储到 Visual Basic 中的数据集。这可能吗?我似乎无法在网上找到有关这样做的任何信息。如果有人能指出我正确的方向,那就太棒了!
编辑:我的 table 中的列是 table 命名人中的名字、姓氏、州等。
控制台应用程序的启动:"Enter FirstName: ",然后是 "EnterLastName: ",然后是等等
用户输入的值存储在特定变量中,例如。 firstName,lastName,所以我想知道如何将这些变量放入数据集中。
谢谢。
这是一个简短的基本示例。它很可能不会直接满足您的需求,因为您可能希望使用类型化数据集等。由于您的问题没有指定关于您可能已经尝试过的代码的问题,所以我将提供这些。
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
如果您不知道列名,可以使用反射来获取输入对象的属性名称。您还可以使用特性来过滤特性。使用 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
我需要将用户输入(从控制台输入)存储到 Visual Basic 中的数据集。这可能吗?我似乎无法在网上找到有关这样做的任何信息。如果有人能指出我正确的方向,那就太棒了!
编辑:我的 table 中的列是 table 命名人中的名字、姓氏、州等。 控制台应用程序的启动:"Enter FirstName: ",然后是 "EnterLastName: ",然后是等等
用户输入的值存储在特定变量中,例如。 firstName,lastName,所以我想知道如何将这些变量放入数据集中。
谢谢。
这是一个简短的基本示例。它很可能不会直接满足您的需求,因为您可能希望使用类型化数据集等。由于您的问题没有指定关于您可能已经尝试过的代码的问题,所以我将提供这些。
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
如果您不知道列名,可以使用反射来获取输入对象的属性名称。您还可以使用特性来过滤特性。使用 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