CREATE TABLE Test(id int identity(1,1))with ADOQuery do
begin
Close;
SQL.Text = 'select * from Test';
Open;
ShowMessage(Fields[0].ClassName); //输出 TAutoIncField Close;
SQL.Text = 'select * from (select * From Test) as a';
Open;
ShowMessage(Fields[0].ClassName);
//这儿要注意:
// SQL SERVER 2000下输出 TAutoIncField
// SQL SERVER 2005下输出 TIntegerField!
end;
步步陷阱,如果大家有哪些其他要注意的地方也可以写出来。
解决方案 »
- 如何用IdMappedPortTCP实现端口转发?
- delphi access数据库中存入图片路径
- 如何能得到DELPHI编译生成的DLL的接口列表,高手进来看看
- asp问题
- 向TListView插入数据太慢,有什么方法提高速度?
- image1.picture:=nil会不会浪费内存?怎么解决?
- 数据连接的共享问题
- 在Delphi6中如何用adoquery进行模糊查询
- ShowMessage的用法
- 我用html help workshop做帮助,为什么html文件中的图形显示不出来?
- 关于点击按钮操作成功后弹出气泡提示:“操作成功!”并播放一段wav。大家说说自己的方法,兼收并蓄,择优录用,一律给分
- 大家好,有没有浏览数据库中的图片并能在窗口中放大与缩小这样的控件?
SQL SERVER2005下,取出来的id字段就变成 TInteger类型了
通过在D7和D10中试验得出一个参考结论: 在D7和D10中都提示为TAutoIncField。 条件:
SQL2005为在原来2000未卸载干净的情况下安装的,所以保留了2000的一些机制。不知道在纯2005下面是否会出现楼主所说的情况。
如果在纯2005环境下出现楼主所说的情况,我猜想,是否是因为2005改变了一些东西,而Delphi在调用的时候就无法获取这些被改变的信息,导致字段类型在楼主所说的情况下转换成接近的类型被显示出来。
呵呵,小生愚见,如有错误的地方,望各位星星不吝赐教!
其实从SQL2k SP4开始就有好些与之前所不同,相关的应该在MSSQL版当中可以查到。SP4之后有对部分查询进行了优化,从而使得与之前的版本有相当大的结果差,也正因为如此,即便是SP4有了相当的性能提升也仍然,还有很多人不愿意更新。因为有些已经使人形成了一种习惯,甚至可以说是一种便利。更新之后,不仅得不到这种便利,稍欠清楚一点就有可能写出的东西事与愿违。
用起来好不习惯.