问题一:
在SQL分析器中语句如下
Select * From LendInf B
Inner Join BookTable C On B.BookCode=C.BookCode
Inner Join ReaderTable A On A.ReaderCode=B.ReaderCode但是在Delphi中,却只能写成下面的形式
Select *
From ( LendInf B
Inner Join BookTable C On B.BookCode=C.BookCode )
Inner Join ReaderTable A On A.ReaderCode=B.ReaderCode
实在是不方便,假如有多个Join的表,那括号的结构就够让人心烦了
有什么办法能解决?
问题二:
将查询Query构件,比如ADOQuery与DBGrid结合,假如ADOQuery的SQL语句是Select形式,用Open命令,DBGrid可以返回结果;而用ExecSQL命令就不能返回结果。
假如我在ADOQuery使用其他不返回结果的命令,比如Delete ,Update 等,却只能使用ExecSQL命令;也就是说,我必须在执行之前要判断是用Open 还是ExecSQL命令。
有没有办法避免?一定要判断吗?
在SQL分析器中语句如下
Select * From LendInf B
Inner Join BookTable C On B.BookCode=C.BookCode
Inner Join ReaderTable A On A.ReaderCode=B.ReaderCode但是在Delphi中,却只能写成下面的形式
Select *
From ( LendInf B
Inner Join BookTable C On B.BookCode=C.BookCode )
Inner Join ReaderTable A On A.ReaderCode=B.ReaderCode
实在是不方便,假如有多个Join的表,那括号的结构就够让人心烦了
有什么办法能解决?
问题二:
将查询Query构件,比如ADOQuery与DBGrid结合,假如ADOQuery的SQL语句是Select形式,用Open命令,DBGrid可以返回结果;而用ExecSQL命令就不能返回结果。
假如我在ADOQuery使用其他不返回结果的命令,比如Delete ,Update 等,却只能使用ExecSQL命令;也就是说,我必须在执行之前要判断是用Open 还是ExecSQL命令。
有没有办法避免?一定要判断吗?
SQL只和数据库服务器有关,例如Oracle/MS SQL的语法不一样。
delphi 中SQL只是文本,可以写成任何形式。如果太长的语句无法定义,可以动态从文本文件
中加载。
2
当然要你自己判断!你的SQL是delete或Select什么时候该执行你自己都不知道,那Delphi为什么要知道呢?