如何察看生成的SQL语句 在窗体上扔一个TEdit控件,然后打入代码Edit1.Text:=ADOQuery1.SQL.Text;就行了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ShowMessage(ADOQry->SQL->Text);不行么? ADO的动态SQL语句跟踪不了,你死了这个心吧。 回答好残忍呀!ShowMessage(ADOQry->SQL->Text);不行么?看到的是没替换的语句 Memo.Lines:=ADOQuery1.SQL;ShowMessage(ADOQry->SQL->Text);不行么? Memo.Lines:=ADOQuery1.SQL;ShowMessage(ADOQry->SQL->Text)不行 那样看不到参数的。你想看参数啊?用sql monitor吧,好象是这么写的。就在ide里。 yansea(思宏) 你不知道sql monitor只能用在BDE上面吗?对于ADO没用的 ADOQry->Active= false; ADOQry->SQL->Clear(); ADOQry->SQL->Add("select id from account"); ADOQry->SQL->Add("where username="+quotedStr(CmbBoxUser->Text;) ADOQry->SQL->Add(' and password="+quotedStr(EdtPW->Text)); ADOQry->Prepared= true; ADOQry->Open(); ShowMessage(ADOQry->SQL->Text); 可以了吧 ADOQry->Active= false; ADOQry->SQL->Clear(); ADOQry->SQL->Add("select id from account"); ADOQry->SQL->Add("where username="+quotedStr(CmbBoxUser->Text)); ADOQry->SQL->Add(' and password="+quotedStr(EdtPW->Text)); ADOQry->Prepared= true; ADOQry->Open(); ShowMessage(ADOQry->SQL->Text); 可以了吧 m_leaner(追鑫) 我原来就这么写的,而且用了几年了但是这样不好保存sql的模板,写成了 "select * from xxx where id=%s"然后用format替换,但是发现它对于字符串中 '和%处理得不好,虽然 quotedStr可以解决 '的问题,但是对于 %也没办法,考虑到delphi的参数替换不错,所以才用,但发现没法子看sql语句了。 rzh(小江西) 你来灌水的?!你看没看明白题呀!看没看我前面写得什么? 自己写个函数来生成SQL语句咧99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999B@B@B@BBBMMMM999999999999999999999999999999999999999M+:.:+9999M:9999999999999999999999999999999999999999MM9+99MMM:999999999999999999999999999999999999999999M+.+99M:9999999999999999999999999999999999999999999B:.++9M:9999999999999999999999999999999999999999999B+.+99M:9999AAAAAA999999999999999999999999999999999B:.++9M:9AAA++++:+AAA999999999999999999999999999999B+.+99M:A+9+A:+++++9AA99999999999999999999999999999B:.++9:A+@+A:,:++9+A9@M9999999999999999999999999999B+.+9:A+A,,,,,,+A+A9@A@M999999999999999999999999999B:.++A+A+,,.,,+A9A9@A@M@M99999999999999999999999999B+.+9AA+,,...,++A9@A@A@MM99999999999999999999999999B:.+:A+++,,.,,++9@A@A@M@M99999999999999999999999999B+.+A+@+,,,,,+9A@A+@@M@M@M9999999999999999999999999B:.+A@+++,+,+9A9A++@M@M@MM9999999999999999999999999B+.+A+@++++++A9A++9M@M@M@M9999999999999999999999999B:.+A@+@+:+9A9A9A9M@M@M@9M999999999990A999999999999B+.+A+@+@+@+@+@A@A@9@9@9@M9999999999999999999999999B:.+A@+@+@+@+@+@A@M@9@9@9M9999999999999999999999999B+.+:A@+@+@+@+@A@M@9@9@9M99999999999999999999999999B:.+:A9@+@+@+@9@A@M@9@9@M99999999999999999999993333333333M9@9@9@9@9@M@9@9@9M99999999999999999999993.........MAA99@9@9@M@9@9@9M999999999999999999999993...MMMM..MM@9@9@9@9@M@9@9M9999999999999999999999993....MMM..M:M@9@9@9@9@9@9M99999999999999999999999993...MMMM..M:9MMM@9@9@9MMM999999999999999999999999993..MMM.M..M:9999MMMMMM999999999999999999999999999993..MM.....M:9999999999999999999999999999999999999993..M......M:9999999999999999999999999999999999999993...M.....MM:999999999999999999999999999999999999993.........M9M:9999999999999999999999999999999999999MMMMMMMMMMMMMM:9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999.9999999.99999999999999999999999999999....999999999.9999999.99999.999999..999999999999999.999.99999999.9999999.99999999999.99999999999999999.9999.99...99.9....99....99.9999.999999999999999999.9999.9.999.9.9.999.9.999.9.9999....999999999999999.9999.9.....9.9.999.9.999.9.9999.999.99999999999999.9999.9.99999.9.999.9.999.9.9999.999.99999999999999.999.99.999.9.9.999.9.999.9.9999.999.99999999999999....9999...99.9....99.999.9.99999...999999999999999999999999999999.99999999999999999999999999999999999999999999999999.99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999990 delphi_xizhousheng(西周生) 你灌水呢? 添加一个Memo1控件 ADOQry->Active= false; ADOQry->SQL->Clear(); ADOQry->SQL->Add("select id from account"); ADOQry->SQL->Add("where username=:Username and password=:Password"); ADOQry->Parameters->ParamByName("Username")->Value= CmbBoxUser->Text; ADOQry->Parameters->ParamByName("Password")->Value= EdtPW->Text; ADOQry->Prepared= true; ADOQry->Open(); Memo1.Text:=ADOQry.SQL.Text;收工。 添加一个Memo1控件 ADOQry->Active= false; ADOQry->SQL->Clear(); ADOQry->SQL->Add("select id from account"); ADOQry->SQL->Add("where username=:Username and password=:Password"); ADOQry->Parameters->ParamByName("Username")->Value= CmbBoxUser->Text; ADOQry->Parameters->ParamByName("Password")->Value= EdtPW->Text; ADOQry->Prepared= true; ADOQry->Open(); Memo1.Lines.Text:=ADOQry.SQL.Text;收工。 ADOQuery1.Open;ShowMessage(ADOQuery1.SQL.CommaText); Qry1.Open;ShowMessage(Qry1.Sql.CommaText);其中Qry1(TADOQuery); 我想你可以用数据库的SQL语句分析器和跟踪器 kds(生) 的答案让我哭笑不得,你们就是靠这个骗分吗?这点基本的素质都没有?看不到前面的问题和前面别人已经说过的内容?Mike_Ge(蜜蜂)我谢谢你的胡说八道!你看看帮助那个CommaText是干吗的。wg007(迈克)你给我推荐一个分析器和跟踪器,你用过哪个? kds(生) 的答案让我哭笑不得,你们就是靠这个骗分吗?这点基本的素质都没有?看不到前面的问题和前面别人已经说过的内容?Mike_Ge(蜜蜂)我谢谢你的胡说八道!你看看帮助那个CommaText是干吗的。wg007(迈克)你给我推荐一个分析器和跟踪器,你用过哪个? 我不是说过“ADO的动态SQL语句跟踪不了,你死了这个心吧。”了吗?怎么现在还不结贴?我一般同一句话不想再说第二次。虽然是泼你冷水,但我的答案肯定是正确的。为什么这么说呢?因为Delphi里使用的ADO只不过是对微软的ADO原生对象的一个简单的封装,最后还是通过调用ADO底层那些Dll函数来完成通用的数据引擎的操纵,这个过程是Borland公司无法控制,微软公司给其他厂商只是提供了外层封装的一些接口而已,真正对数据库操作的函数是保密的,所以如果说有第三方厂商能够跟踪ADO对数据库操作的动态SQL语句,那是假的!至于是不是完全没有办法,那倒不一定,如果你用回微软自己的SQLServer,在事件查看器里就可以看到正在执行的SQL语句,当然,其他的大型数据库也可能有这个功能。但都是自身所带的工具,原则上所以对其数据库的操作,不管ODBC、ADO或者BDE都好,都可以跟踪出来。 huangcf(huangcf)ADO的确是微软的东西,我也不指望能bcb能跟踪,但是TParameters这个东西可是borlandc自己的,他的ParamByName生成的sql语句怎么能看不到呢?这个borland应该容易吧? huangcf(huangcf)我说的不对吗?别生气,我不是专牛角尖。 pazee(耙子),其实你就是在钻牛角尖,知道吗?而且,大家的回复即使有错,你也不应该骂人家,愿意帮你才给你回帖,那是对你的支持,怎么能叫“骗分”,“胡说八道”呢?说句老实话,大家到这里来,我想更多的人目的同我一样,以学习经验,汲取知识为目的,帮助他人是我们的快乐。至于那没有任何用处的分,那些都是虚的。除了虚荣,没有任何用处。好,言归正传。你的问题,我在看了huangcf(huangcf) 的最后回复后,也有同感。微软在这一方面的确比较霸道,Borland确实无法操纵底层的内核。至于你想在Debug时查看SQL的属性,大家已经把能够想到的办法都提供出来了,差不多是能想到的最好的办法了。如果你坚持一定要在运行时获得SQL中的Text,我建议你还是不要使用参数查询。或者,你自己写一些代码,把SQL语句构造出来,这样更好些。其实,参数的赋值,说白了就是替换掉原SQL语句中的冒号参数。这是一个简单的道理,不是吗?不管怎么说,你应该向被你骂过的人道歉。这样,你今后才能在这个论坛继续提问题,继续生存下去。大家只有这样,才能够维护一个良好的社区风气,才能获取大家间彼此的尊重。 所以你应该把自己绑好,带上藤条,到被你黑过的同行门前请求被鞭打宽恕,唉,同情~~~~~~~~~~~~~~~~~~~~~ 你可用SQL SERVER自带的跟踪器,直接查看跟踪结果就可以了,通过DELPHI中的SQL属性看参数是不可能的 在server上启动trace,一目了然,特别对非调试环境 我再次声明,我要的不是监控ms 的ado的sql,我是要看borland替换完参数的结果,这个和ms没关系,bde也一样有着问题,这个应该还在vcl的范畴。我只是问这个问题,是个技术上的,我想很多人都会遇到,我也一直在用format来生成sql,但是写着比较麻烦,而且还要处理类似'这类的符号。tttk(要做就做最好) 谢谢你的批评,感谢你的直率!第一,我没骂人;第二,你不得不承认很多人的回答根本就是不负责任的,同样一句话会被n个人说,即使前面告诉了这是错的,如果她负责人仔细看过了帖子我想他不会这么回答的,不要说他们不懂(不懂回答什么);第三,不知道人,可以关注,可以帮我找答案,但不该上来说废话,说没有根据的错话,耽误大家的时间;第四,这个问题,我的分数从20分加到了100分,表示了我对此题的重视,我原来没觉得难,现在看来的确是个难题。我在csdn上面问了20几个问题,只有个别的回答精彩,然我佩服,其余的都是灌水。当然不可否认csdn藏龙卧虎。我在csdn不是一天两天了,我明白里面的东西,很多人是为了分,他虽然不是钱,这个分数是csdn的动力,没必要回避。 ADOQry->Active= false; ADOQry->SQL->Clear(); ADOQry->SQL->Add("select id from account"); ADOQry->SQL->Add("where username=:Username and password=:Password"); ADOQry->Parameters->ParamByName("Username")->Value= CmbBoxUser->Text; ADOQry->Parameters->ParamByName("Password")->Value= EdtPW->Text; ShowMessage(ADOQry->SQL->Text); //在打开前才能看 ADOQry->Prepared= true; ADOQry->Open(); ADOQry->Active= false; ADOQry->SQL->Clear(); ADOQry->SQL->Add("select id from account"); ADOQry->SQL->Add("where username=:Username and password=:Password"); ADOQry->Parameters->ParamByName("Username")->Value= CmbBoxUser->Text; ADOQry->Parameters->ParamByName("Password")->Value= EdtPW->Text; ShowMessage(ADOQry->SQL->Text); //在打开前才能看 ADOQry->Prepared= true; ADOQry->Open(); to genphone_ru(票票) 打开前,打开后都没用,看到的都是没有替换过的。 你的确是钻了牛角尖,宝兰公司驾奴不了ADO,所以一直Bug多多,而且在微软不断升级ADO的过程中,宝兰也得跟着其步伐推出UpdatePatch,我觉得huangcf(huangcf)说到点上了,我赞同她的说法。 算了!不研究了,我昨天看了vcl的源代码,他没有在提交之间进行替换,只是保留了参数到Parameters里面,然后一起提交给后台的。在publish 里面看不到的。但是TQuery能看到替换完了的sql吗? TQuery根本不做替换,TQuery中的SQL语句就是标准的SQL语句。我还是习惯用TQuery,全部用SQL语句来处理。加上直接用DBLIB做程序,就不用转换过去转换过来 三层,客户端调用服务端函数,返回字符型可以吗? delphi 同步问题 急!!! 急求修改EXE版本信息的代码或控件? 请问如何在一个mdi窗体中通过按钮将另外一个mdi窗体做到bringtofront的效果? 哎,人气越来越差,把分散掉算了!(2) 关于两台处于防火墙内部的客户机的通讯问题 为什么在delphi不能运行,而在bcb中可以; 怎样可以检查客户在EDIT输入的单号带有A。B。C就提取各自不同的价钱 onclose的问题? Object Pascal:从对象指针谈起 CONTROL+f2突然间没效果了,该怎么办? DELPHI6的 DBchart 控件用法,谢谢,急,马上给分
看到的是没替换的语句
不行
就在ide里。
你不知道sql monitor只能用在BDE上面吗?对于ADO没用的
ADOQry->Active= false;
ADOQry->SQL->Clear();
ADOQry->SQL->Add("select id from account");
ADOQry->SQL->Add("where username="+quotedStr(CmbBoxUser->Text;)
ADOQry->SQL->Add(' and password="+quotedStr(EdtPW->Text));
ADOQry->Prepared= true;
ADOQry->Open();
ShowMessage(ADOQry->SQL->Text);
可以了吧
ADOQry->Active= false;
ADOQry->SQL->Clear();
ADOQry->SQL->Add("select id from account");
ADOQry->SQL->Add("where username="+quotedStr(CmbBoxUser->Text));
ADOQry->SQL->Add(' and password="+quotedStr(EdtPW->Text));
ADOQry->Prepared= true;
ADOQry->Open();
ShowMessage(ADOQry->SQL->Text);
可以了吧
我原来就这么写的,而且用了几年了
但是这样不好保存sql的模板,
写成了 "select * from xxx where id=%s"然后用format替换,但是发现它对于字符串中 '和%处理得不好,
虽然 quotedStr可以解决 '的问题,但是对于 %也没办法,考虑到delphi的参数替换不错,所以才用,但发现没法子看sql语句了。
你来灌水的?!
你看没看明白题呀!看没看我前面写得什么?
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
99999999999B@B@B@BBBMMMM999999999999999999999999999
999999999999M+:.:+9999M:999999999999999999999999999
9999999999999MM9+99MMM:9999999999999999999999999999
99999999999999M+.+99M:99999999999999999999999999999
99999999999999B:.++9M:99999999999999999999999999999
99999999999999B+.+99M:9999AAAAAA9999999999999999999
99999999999999B:.++9M:9AAA++++:+AAA9999999999999999
99999999999999B+.+99M:A+9+A:+++++9AA999999999999999
99999999999999B:.++9:A+@+A:,:++9+A9@M99999999999999
99999999999999B+.+9:A+A,,,,,,+A+A9@A@M9999999999999
99999999999999B:.++A+A+,,.,,+A9A9@A@M@M999999999999
99999999999999B+.+9AA+,,...,++A9@A@A@MM999999999999
99999999999999B:.+:A+++,,.,,++9@A@A@M@M999999999999
99999999999999B+.+A+@+,,,,,+9A@A+@@M@M@M99999999999
99999999999999B:.+A@+++,+,+9A9A++@M@M@MM99999999999
99999999999999B+.+A+@++++++A9A++9M@M@M@M99999999999
99999999999999B:.+A@+@+:+9A9A9A9M@M@M@9M99999999999
0A999999999999B+.+A+@+@+@+@+@A@A@9@9@9@M99999999999
99999999999999B:.+A@+@+@+@+@+@A@M@9@9@9M99999999999
99999999999999B+.+:A@+@+@+@+@A@M@9@9@9M999999999999
99999999999999B:.+:A9@+@+@+@9@A@M@9@9@M999999999999
99999999993333333333M9@9@9@9@9@M@9@9@9M999999999999
99999999993.........MAA99@9@9@M@9@9@9M9999999999999
99999999993...MMMM..MM@9@9@9@9@M@9@9M99999999999999
99999999993....MMM..M:M@9@9@9@9@9@9M999999999999999
99999999993...MMMM..M:9MMM@9@9@9MMM9999999999999999
99999999993..MMM.M..M:9999MMMMMM9999999999999999999
99999999993..MM.....M:99999999999999999999999999999
99999999993..M......M:99999999999999999999999999999
99999999993...M.....MM:9999999999999999999999999999
99999999993.........M9M:999999999999999999999999999
9999999999MMMMMMMMMMMMMM:99999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
99999999999999999999.9999999.9999999999999999999999
9999999....999999999.9999999.99999.999999..99999999
9999999.999.99999999.9999999.99999999999.9999999999
9999999.9999.99...99.9....99....99.9999.99999999999
9999999.9999.9.999.9.9.999.9.999.9.9999....99999999
9999999.9999.9.....9.9.999.9.999.9.9999.999.9999999
9999999.9999.9.99999.9.999.9.999.9.9999.999.9999999
9999999.999.99.999.9.9.999.9.999.9.9999.999.9999999
9999999....9999...99.9....99.999.9.99999...99999999
9999999999999999999999.9999999999999999999999999999
9999999999999999999999.9999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
999999999999999999999999999999999999999999999999999
9999999999999999999999999999999999999999999999999990
ADOQry->Active= false;
ADOQry->SQL->Clear();
ADOQry->SQL->Add("select id from account");
ADOQry->SQL->Add("where username=:Username and password=:Password");
ADOQry->Parameters->ParamByName("Username")->Value= CmbBoxUser->Text;
ADOQry->Parameters->ParamByName("Password")->Value= EdtPW->Text;
ADOQry->Prepared= true;
ADOQry->Open();
Memo1.Text:=ADOQry.SQL.Text;
收工。
ADOQry->Active= false;
ADOQry->SQL->Clear();
ADOQry->SQL->Add("select id from account");
ADOQry->SQL->Add("where username=:Username and password=:Password");
ADOQry->Parameters->ParamByName("Username")->Value= CmbBoxUser->Text;
ADOQry->Parameters->ParamByName("Password")->Value= EdtPW->Text;
ADOQry->Prepared= true;
ADOQry->Open();
Memo1.Lines.Text:=ADOQry.SQL.Text;
收工。
ShowMessage(ADOQuery1.SQL.CommaText);
ShowMessage(Qry1.Sql.CommaText);其中Qry1(TADOQuery);
你们就是靠这个骗分吗?这点基本的素质都没有?
看不到前面的问题和前面别人已经说过的内容?Mike_Ge(蜜蜂)
我谢谢你的胡说八道!
你看看帮助那个CommaText是干吗的。wg007(迈克)
你给我推荐一个分析器和跟踪器,你用过哪个?
你们就是靠这个骗分吗?这点基本的素质都没有?
看不到前面的问题和前面别人已经说过的内容?Mike_Ge(蜜蜂)
我谢谢你的胡说八道!
你看看帮助那个CommaText是干吗的。wg007(迈克)
你给我推荐一个分析器和跟踪器,你用过哪个?
但是TParameters这个东西可是borlandc自己的,他的ParamByName生成的sql语句怎么能看不到呢?
这个borland应该容易吧?
我说的不对吗?
别生气,我不是专牛角尖。
你可用SQL SERVER自带的跟踪器,直接查看跟踪结果就可以了,通过DELPHI中的SQL属性看参数是不可能的
谢谢你的批评,感谢你的直率!
第一,我没骂人;第二,你不得不承认很多人的回答根本就是不负责任的,同样一句话会被n个人说,即使前面告诉了这是错的,如果她负责人仔细看过了帖子我想他不会这么回答的,不要说他们不懂(不懂回答什么);第三,不知道人,可以关注,可以帮我找答案,但不该上来说废话,说没有根据的错话,耽误大家的时间;第四,这个问题,我的分数从20分加到了100分,表示了我对此题的重视,我原来没觉得难,现在看来的确是个难题。我在csdn上面问了20几个问题,只有个别的回答精彩,然我佩服,其余的都是灌水。当然不可否认csdn藏龙卧虎。我在csdn不是一天两天了,我明白里面的东西,很多人是为了分,他虽然不是钱,这个分数是csdn的动力,没必要回避。
ADOQry->SQL->Clear();
ADOQry->SQL->Add("select id from account");
ADOQry->SQL->Add("where username=:Username and password=:Password");
ADOQry->Parameters->ParamByName("Username")->Value= CmbBoxUser->Text;
ADOQry->Parameters->ParamByName("Password")->Value= EdtPW->Text;
ShowMessage(ADOQry->SQL->Text); //在打开前才能看
ADOQry->Prepared= true;
ADOQry->Open();
ADOQry->SQL->Clear();
ADOQry->SQL->Add("select id from account");
ADOQry->SQL->Add("where username=:Username and password=:Password");
ADOQry->Parameters->ParamByName("Username")->Value= CmbBoxUser->Text;
ADOQry->Parameters->ParamByName("Password")->Value= EdtPW->Text;
ShowMessage(ADOQry->SQL->Text); //在打开前才能看
ADOQry->Prepared= true;
ADOQry->Open();
打开前,打开后都没用,看到的都是没有替换过的。
不研究了,我昨天看了vcl的源代码,他没有在提交之间进行替换,只是保留了参数到Parameters里面,
然后一起提交给后台的。
在publish 里面看不到的。但是TQuery能看到替换完了的sql吗?
我还是习惯用TQuery,全部用SQL语句来处理。
加上直接用DBLIB做程序,就不用转换过去转换过来