在使用SQL中困惑(50分)

T

tcylx

Unregistered / Unconfirmed
GUEST, unregistred user!
最近我在使用QUERY时遇到这样一个问题,当我点击QJUERY的SQL属性时
弹出一个STRING LIST EDITOR 的对话框,在其中输入
SELECT *from 表1 然后按 OK 按钮,运行正常
DBGIRD显视正常。但是我在原程序中输入这样一段程序

QUERY1。SQL。CLEAR;
QUERY1。SQL。ADD(SELECT *FROM 表1 ORDER BY 快报 DESC);
确不能运行并提示 undeclared indentifier;'select'
legal character inimput file:'表'($b1eb)
legal character inimput file: '快'($bfec)
请问各位高手,这是为什么?
 
QUERY1.SQL.ADD(<b>'</b>SELECT *FROM 表1 ORDER BY 快报 DESC<b>'</b>);
 
不要忘了单引号,sql.add应该是字符串类型的参数。
 
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.ADD('SELECT *FROM 表1 ORDER BY 快报 DESC');
Query1.Open;
 
一般写为
querystring:string;
...
querystring:='select * from table';
...
sql.add(querystring);

sql.add('select * from table');
 
最好將一條分幾行寫,出錯時可知在第幾行,當然要加引號:
QUERY1.SQL.ADD('SELECT *FROM 表1 ');
QUERY1.SQL.ADD('ORDER BY 快报 DESC');
 
1、加单引号;
2、将*与FROM分开。
QUERY1.SQL.CLEAR;
QUERY1.SQL.ADD('SELECT * FROM 表1 ORDER BY 快报 DESC');
 
>>最好將一條分幾行寫,出錯時可知在第幾行
rixin: 能介绍一下经验吗? 出错时怎样知道是第几行出错?
 
语法错误,DELPHI可告知是SQL语句的第几行出错
如果是逻辑错误没法了
 
如果有如下语句出错:
<font color=red>QUERY1.SQL.ADD</font><font color=blue>('SELECT *FROM 表1 ');</font>
<font color=red>QUERY1.SQL.ADD</font><font color=blue>('ORDER BY 快报 DESC');</font>
delphi最多只能告诉你上面<font color=red>红字</font>部分语句哪里
出错,对于<font color=blue>蓝字</font>部分是无法知道哪行出错的,因为
SQL查询的出错信息肯定是数据库驱动返回来的,而到了数据库驱动那里,sql语句
早就合并成一行了!
所以我个人认为,"最好將一條分幾行寫,出錯時可知在第幾行"不成立.
 
>>到了数据库驱动那里,sql语句早就合并成一行了
>>所以我个人认为,"最好將一條分幾行寫,出錯時可知在第幾行"不成立
用TStrings.Add方法添加的文本的确是多行的,
而且DB Server能报告哪行出错
如果这样写,
with Querydo
begin
...
SQL.Text:='....'
+' ....'
+' ....';
...
end;
就是单行的
如果要改成多行也很简单:
SQL.Text:='....'<B>+#13</B>
+' ....'<B>+#13</B>
+' ....';
就可以了
DB Server收到的照样是多行,也能报告哪行出错
>>delphi最多只能告诉你上面红字部分语句哪里出错
人家当然不是说编译器能报告错误,
运行时EDatabaseError会包含DB Server返回的错误信息
 
哦? 是吗?
 
你说呢~~~
 
说实话,我从没注意过dbdriver返回的出错信息里面还包括行号.
可能是我错了.
 
谢谢各位大虾的有情相助。至于分数吗,论功行赏。
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
735
DelphiTeacher的专栏
D
D
回复
0
查看
711
DelphiTeacher的专栏
D
顶部