日期:2014-05-17  浏览次数:20690 次

遇到鬼了!!!
数据库中有“编号”列,int型,“姓名”列,设置了“编号”列为主键列
由于提取的数据是按照“编号”列从大到小排列的,我也按照这个顺序插入数据库,插完之后,看了一下数据库,“编号”列是按照升序排序的,一切正常

再次重新连接数据库,提取数据填充到DataTable,结果提取DataTble的部分row一查看,却是按照“编号”列从大到小排序的,这是什么原因啊?于是设置DataTable的主键列为“编号”列,结果还是以降序排序的,按照插入数据库的顺序排的
请指教一下,各位!!

------解决方案--------------------
实际上你是按照从大到小插入的,只不过数据库中呈现是从小到大排的。

你取数据的时候,请加上 order by 编号 asc 就行了,这样取出的DataTable中是按照从小到大的顺序
------解决方案--------------------
一定要用order by,数据库不承诺插入顺序和取出数据的顺序一致。
------解决方案--------------------
用 order by 排下吧,
插入与读取的顺序是不一样的,
------解决方案--------------------
设置了主键对排序没影响吧。
------解决方案--------------------
探讨

但是,我设置了DataTable的主键,那就应该自动以主键列排序啊,为什么没有呢?

------解决方案--------------------
主键跟排序没有直接关系,想排序的话最好使用order by
------解决方案--------------------
主键和排序没关系滴,读取的时候加 order by '编号 ' desc
------解决方案--------------------
order by '编号 ' desc,排下序就可以了
------解决方案--------------------
我还以为你真的遇到鬼了。

------解决方案--------------------
题不对文!
------解决方案--------------------
在数据库中,设置主键,会自动以主键排序,这点没问题吧,会自动在主键列创建聚集索引。 --这个真有问题,主键是约束不能有相同的编号

是不是DataTable中,设置主键,不会自动以主键列排序呢?
------解决方案--------------------
主键跟排序没有任何关系,你可以看看你在数据库查看时的sql语句,把这个语句拿到你的代码里执行得到datatable的顺序是否一致
这里没有道士,没法抓鬼
------解决方案--------------------
order by asc
------解决方案--------------------
要么在sql中加order 要么用dataview.srot
------解决方案--------------------
sort
------解决方案--------------------
探讨

引用:
在数据库中,设置主键,会自动以主键排序,这点没问题吧,会自动在主键列创建聚集索引。 --这个真有问题,主键是约束不能有相同的编号

是不是DataTable中,设置主键,不会自动以主键列排序呢?

在列上创建索引,列会自动排序,这点没问题吧?
如果没问题,那么:

在数据库中,设置主键,会自动在主键列创建索引,这点没问题吧?
如果没问题,那么:

……

------解决方案--------------------
呵呵 是你理解的不对哦 select * from table order by asc (desc)
------解决方案--------------------
由于你插入的序列是大到小,而查询到的数据集也是由大到小,没有问题
------解决方案--------------------
不知道楼主是从哪里得到主键就默认对查询结果排序的结论?

给偶也长长见识