【发布时间】:2020-03-03 16:38:17
【问题描述】:
我有一个简单的 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 对行进行排序。
你知道如何摆脱它并告诉它使用原始数据吗?
【问题讨论】:
-
呃.. 除非您告诉它,否则 VB 不会对数据进行排序,并且您的 VB 中没有任何内容正在排序。 Dictionary(Of T,T) 不是排序集合。您确定您的查询工具和您的 VB 使用相同的 NLS_SORT 吗?在查询工具和 VB 中运行
select * from nls_session_parameters where parameter='NLS_SORT';并告诉我们结果。在我看来,Oracle 以一种顺序为您的查询工具和另一种顺序为您的 VB 提供数据
标签: asp.net vb.net oracle datareader