2016-04-29 76 views
1

我需要將用戶輸入(從控制檯輸入)存儲到Visual Basic中的數據集。這可能嗎?我似乎無法在網上找到任何關於這樣做的信息。如果任何人都能指出我正確的方向,那將是非常棒的!您可以用用戶輸入填充數據集嗎?

編輯:我的表中的列是FirstName,LastName,State等在名爲Person的表中。 控制檯應用程序的開始:「Enter FirstName:」,然後是「EnterLastName:」等。

用戶輸入的值存儲在特定變量中,例如。 firstName,lastName,所以我想知道如何將這些變量放入數據集中。

謝謝。

回答

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 
+0

這就是我要找的。非常感謝你!乾杯! :-) – TimmyHoHoo

0

如果您不知道列名稱,則可以使用反射來獲取輸入對象的屬性名稱。您也可以使用屬性來過濾屬性。使用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 
+0

當我嘗試顯示數據集中的值時,它顯示空白名字。我也得到一個錯誤:'找不到列1' – TimmyHoHoo

+0

@TimmyHoHoo也許你錯過了一些東西。請複製並粘貼上述代碼並重試。 –