2013-03-14 71 views
0

在我的代码中,我有一个函数,它从数据库中返回一行数据。它使用Structure返回数据,因此我可以返回多个数据。一个函数能返回多于一行的数据吗?

例如:

Public Structure structure_name 
    Public column1 as integer 
    Public column2 as string 
    Public column3 as string 
End Structure 

Function function_name() As structure_name 
    Dim single_row_structure as structure_name 

    'get single row from database 
    'assign single row values to attributes of Structure 

    single_row_strucure.column1 = dbcol1 
    single_row_strucure.column2 = dbcol2 
    single_row_strucure.column3 = dbcol3 

    return single_row_strucure 
End Function 

这工作正常单行。我的问题是,我如何获得一个返回多于一行数据的函数?

+0

为什么你可以不返回行的集合? – Alex 2013-03-14 15:45:54

+0

'Function function_name()as structure_name()'应该工作吗? – jgauffin 2013-03-14 15:50:01

回答

1
Function function_name() As structure_name() 

    Dim rows(2) as structure_name 
    rows(0).column1 = dbcol1 
    rows(0).column2 = dbcol2 
    rows(0).column3 = dbcol3 
    rows(1).column1 = dbcol1 
    rows(1).column2 = dbcol2 
    rows(1).column3 = dbcol3 

    return rows 
End Function 

http://www.vb-helper.com/howto_net_declare_arrays.html

+0

我知道如何改变这个,所以行数是基于从数据库返回的行数,但是如何在function_name()之外使用返回的结构数组呢?如果行数由数据库返回的行数决定? – oshirowanen 2013-03-15 12:24:53

0

是的,你可以返回某种类型的集合。因为您的标签建议您使用.NET的第一个版本,所以在语法选项中可能会有一些限制。 (1.1 - 是真的吗?)

使用最新版本的.NET和C#,我会返回List<structure_name>。但是还有很多其他的选择。

就从数据库中获取数据而言,数据库非常适合返回多行数据。但是您需要提供有关哪个数据库以及您如何获取数据的更多详细信息,以便提供有关如何将其传输到C#集合的建议。

0

对不起一段时间,因为VB所以C#

为什么不使用集就像一个列表

List<structure_name> structure_names = new List<structure_name>(); 

structure_names.Add(single_row_strucure); // repeat