如何在vb.net的列表中存储选定的数据?

时间:2013-05-17 09:37:09

标签: sql vb.net

我在myRawData表中过滤了数据,结果查询将插入到myImportedData表中。

情况是,在将其插入myImportedData之前,我将在过滤后的数据中进行一些格式化。

我的问题是如何将过滤后的数据存储在列表中?因为这是我重复过滤数据的最简单方法。

到目前为止,这是我的代码,它只在列表中存储1个数据。

    Public Sub ImportData()

    Dim con2 As MySqlConnection = New MySqlConnection("Data Source=server;Database=dataRecord;User ID=root;")

    con2.Open()
    Dim sql As MySqlCommand = New MySqlCommand("SELECT dataRec FROM myRawData WHERE dataRec LIKE '%20130517%' ", con2)

    Dim dataSet As DataSet = New DataSet()
    Dim dataAdapter As New MySqlDataAdapter()
    dataAdapter.SelectCommand = sql
    dataAdapter.Fill(dataSet, "dataRec")
    Dim datTable As DataTable = dataSet.Tables("dataRec")

    listOfCanteenSwipe.Add(Convert.ToString(sql.ExecuteScalar()))

    'ListBox1.Items.Add(listOfCanteenSwipe(0))

    End Sub

myRawData表中的数据示例如下:

    myRawData Table
     --------------------------
    ' id    '    dataRec
     --------------------------
    '  1    '    K10201305170434010040074A466
    '  2    '    K07201305170434010040074UN45   

请帮忙。谢谢。

编辑:

我想要实现的是将过滤后的数据存储在列表中。我使用list来遍历过滤后的数据 - 我对此没有任何问题。

在列表中存储之后,我现在将在dataRec字段中搜索要导入myImportedData表的信息。

要添加一些知识,我将格式化dataRec字段,如下所示:

K07        ----> Loc
20130514   ----> date
0455       ----> time
010        ----> temp
18006D9566 ----> id

3 个答案:

答案 0 :(得分:1)

试试这个

dim x as integer

for x = 0 to datTable.rows.count - 1
  listOfCanteenSwipe.Add(datTable.rows(x).item("datarec"))
next

答案 1 :(得分:0)

为什么不更改您的SQL语句以便为您分割字段?

您应该使用SQL的强大功能来执行您可以在服务器上执行的任何数据操作,它更快,服务器上的开销更少,并且是为此目的而设计的

SELECT 
SUBSTRING(dataRec,1,3) as [Loc]
,SUBSTRING(dataRec,4,8) as [date]
,SUBSTRING(dataRec,12,4) as [time]
,SUBSTRING(dataRec,16,3) as [temp]
,SUBSTRING(dataRec,19,10) as [Loc]
FROM myRawData WHERE dataRec LIKE '%20130517%' 

然后将其直接加载到.NET数据表“myImportedData”

答案 2 :(得分:0)

获取数据表中的数据后,您可以将其转换为通用列表。然后您可以使用此列表进行进一步操作:

List<MyType> list = dataTable.Rows.OfType<DataRow>()
    .Select(dr => dr.Field<MyType>(columnName)).ToList();