即使在VB.NET中使用ORDER BY子句也可以对Oracle DataReader进行排序

问题描述 投票:0回答:1

我有一个简单的SELECT请求:

SELECT id, name FROM myTable ORDER BY id

当我在Oracle中执行它时,我首先得到它的排序字母。

ID         NAME

A          ValueA                                       
B          ValueB                                       
C          ValueC                                       
1          Value1                                       
2          Value2                                       
3          Value3                                      

当我在VB项目中执行它时,即使使用ORDER BY,数据读取器也会根据我的CultureInfo对它进行排序

Dim dictio As New Dictionary(Of String, String)
strQuery = "SELECT id, name FROM myTable ORDER BY id"
rs = New OracleCommand(strQuery, myConnection).ExecuteReader()
Do While (rs.Read())
   dictio.Add(rs.Item(0), rs.Item(1))
Loop

我在字典中按这样的顺序获取数据:

ID         NAME

1          Value1                                       
2          Value2                                       
3          Value3
A          ValueA                                       
B          ValueB                                       
C          ValueC                        

我想这个问题来自.NET本身,将数据放入列表中并使用我的CultureInfo对其进行排序。

您知道如何摆脱它,并告诉它使用原始数据吗?

asp.net vb.net oracle datareader
1个回答
0
投票

无论您查询的实际技术如何,以及为什么数据以不同的顺序输出,具体取决于您执行查询的路线,对数据进行排序通常是前端/可视化策略而非数据库的职责范围

以不带ORDER BY的顺序将数据以任何顺序从数据库中拉出,然后将其在VB中按想要向用户显示的顺序进行排序:

Dim dictio As New SortedDictionary(Of String, String)
                  ^^^^^^
                sort by key


strQuery = "SELECT id, name FROM myTable"
rs = New OracleCommand(strQuery, myConnection).ExecuteReader()
Do While (rs.Read())
   Dim id as String = rs.Item(0).ToString()
   id = Char.IsDigit(id(0)).ToString()(0) + id
   dictio.Add(, rs.Item(1))
Loop
© www.soinside.com 2019 - 2024. All rights reserved.