Vb.net 如何将从datareader检索到的列保存到数组中?

Vb.net 如何将从datareader检索到的列保存到数组中?,vb.net,arrays,sqldatareader,Vb.net,Arrays,Sqldatareader,我想在一个表中检索一列大约800行,并将这些值保存在一个数组中,以便以后引用它们。我怎么做?我试过: con = New OleDb.OleDbConnection("provider=SQLOLEDB;data source=PC;initial catalog=DB1;integrated security=SSPI") cmd = New OleDbCommand("select col1 from table1", con) con.Open()

我想在一个表中检索一列大约800行,并将这些值保存在一个数组中,以便以后引用它们。我怎么做?我试过:

    con = New OleDb.OleDbConnection("provider=SQLOLEDB;data source=PC;initial catalog=DB1;integrated security=SSPI")  

    cmd = New OleDbCommand("select col1 from table1", con)

    con.Open()

    r = cmd.ExecuteReader

    While r.Read

        prev_ob(i) = r.Item(0)(0)

        i = i + 1

    End While

    For i = 0 To UBound(prev_ob)

        Console.WriteLine(prev_ob(i))

    Next`

但它不起作用。col1是Int64类型,数组prev_ob()也是。请告诉我如何将其保存到阵列。

您得到的错误是什么?更多的信息将帮助你更快地得到答案

试试这个:

Dim int64list As New List(Of Int64)

cmd = New OleDbCommand("select col1 from table1", con)

    con.Open()
    r = cmd.ExecuteReader

    While r.Read

        int64list.Add(Convert.ToInt64(r.Item(0))

    End While

For Each obj In int64list
     Console.WriteLine(obj)
Next obj

PS我编写了一个C语言的示例,并尝试将其翻译成VB.net。

首先,很好的用户名!:)接下来,当我试图执行您发布的代码时,我得到了以下错误:对象不能从DBNull强制转换为其他类型。所以我尝试了:
prev_ob.Add(r.Item(“col1”))
,然后我得到:从类型“DBNull”到类型“Long”的转换无效。怎么了(成功了!:)其中一列为空。我修改了我的查询,它成功了。谢谢!:)是否有任何方法可以使用此列表中的各个值进行计算,并且可能在SQL查询中?“是否有任何方法可以使用各个值…”请详细说明。使用列表中的这些值进行任何计算都应该很简单。没关系。我让它工作了使用您建议的方法,并且可以使用它。谢谢!:)