一个很多人不太注意的问题(100分)

  • 主题发起人 主题发起人 Liu JZX
  • 开始时间 开始时间
L

Liu JZX

Unregistered / Unconfirmed
GUEST, unregistred user!
用SQL Link连接SQL Server为什么要区分字段名称的大小写(比如建表时某个字段名
Lzh,则Delphi中所有引用该字段的SQL语句也必须写成Lzh,否则会报错。也就是SQL Server
中的字段名称与Delphi中引用的字段名称必须完全一致)
而ODBC则不区分,为什么???????????
 
来自:Charles 时间:99-11-24 19:07:53 ID:160108
Sqlserver 的排序 是否 区分大小写,与你安装Sqlserver时,所选择的
"排序顺序"有关.默认是字典顺序,不区分大小写.
第一次安装时选择正确的排序顺序是很重要的,如果在安装后需要改变排序顺序
必须重新构造数据库和重新装入数据.
 
同意wjiachun
安装时就可以设置区分不区分了
 
wjiachun或许你没有明白我的意思
我的意思是SQL Link连接SQL Server.
SQL Server中如果某表中有一字段名为Lzh
那么Delphi中的SQL语句也必须写成Lzh(Select Lzh from table1)
如果写成Select lzh from table1或Select LZH from table1
Delphi会报错"没有发现对象"
而ODBC则不区分Select lzh from table1或Select LZH from table1
就不会出错
 
>>用SQL Link连接SQL Server为什么要区分字段名称的大小写

并不是一定要区分大小写,而是query在requestlive时才需要,
这是因为delphi的requestlive是由BDE处理的,相当于我们编程序
的时候把数值放到了变量中 -- 虽然SQL不区分,变量的"="是区分的。

因此,在不需要edit/insert/post的时候,一律不要用requestlive,
如果必须用,那么小心一点,把大小写搞对,算是为方便付出的代价吧!
如果实在要两者“兼得”,用UpdateSQL就可以了。
 
温柔一刀
>>变量的"="是区分的。
什么意思,能否详细的
 
delphi BDE 的bug, 确实如此,用odbc时没有这个问题
 
好像是改BDE中某项设置即可
 
我所说的“变量的"="是区分的”只是表示这个意思,
就是说BDE的requestlive是自己把表信息全都读出来,
不知存成个什么结构,然后在你更新表的时候,他根据
你的更新去表中找到相应的记录和字段进行更新。
而这个过程由于不是依靠DBMS而是BDE的程序,因此便有
可能用到了区分大小写的比较(事实证明也是如此)。

举个简单的例子:dataset的fieldbyname方法是使用了
AnsiCompareText,因此可以不区分大小写,但如果BDE
在requestlive时没有这样做,而是在某个地方使用了"=",
不就区分大小写了吗?

jqw所说"好像是改BDE中某项设置即可"我不知道,愿闻其详。

xh说BDE的bug,也可以算是吧。
 
中SQL SERVER的事!
你在安装的时候选择了“区分大小写”!
 
接受答案了.
 
后退
顶部