請問Query.open & Query.ExecSQL 的差異? |
答題得分者是:Justmade
|
Ethan
版主 發表:101 回覆:170 積分:78 註冊:2006-07-05 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
Open :
當你的 SQL 指令是會另數據庫回傳資料時使用,最常用的是 Select, 但也包括 Show Tables, Show Create Table 等等,你使用 Open (或設 Active := true) DataSet 元件會期望有 Cursor 回傳,即是回傳的是空資料也好;但若沒 Cursor 回傳即會出錯。 ExecSQL :
當你的 SQL 指令只是叫數據庫執行一些東西而沒有 Cursor 回傳的 (可回傳 Row Affected / warning 等資訊)。DataSet 不會預備資源給回傳的 Cursor 所以若有 Cursor 回傳也處理不了。這主要是如 channel 兄所言的 Insert、Update、Delete 但也包括呼叫數據庫做不同事的函數。
|
wnhoo
高階會員 發表:75 回覆:443 積分:198 註冊:2003-04-22 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
引言: Query.open 对数据库的查询、统计、汇总,然后产生返回记录集的时候使用; 但也可以用于INSERT、UPDATE、DELETE等数据库记录改变的操作, 但这中操作最好用Query.ExecSQL;是嗎? 不過不知道為甚麼小弟使用 Query.open 來執行 INSERT, UPDATE, DELETE statemnt 時總是報錯 Error Creating Cursor Handle 看以往的記錄,不少人也遇到同樣問題, http://delphi.ktop.com.tw/topic.php?TOPIC_ID=18884 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=21323 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=21874 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=23750 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=28282 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=24782 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=29343 大家提出的解決辦法都是笨方法--> 不用 Open 改用 ExecSQL 原來還有可以使用 Open 不用轉用 ExecSQL 的聰明方法丫 那便真的要請 wnhoo 大大指教一下整個 K.Top 的網友及 Delphi 的廣大用戶了。 |
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
wnhoo
高階會員 發表:75 回覆:443 積分:198 註冊:2003-04-22 發送簡訊給我 |
我感觉,技术的本身是在于交流!!!
我上面概括是有点不妥,但是在其它语言中,这样用OPEN的方法操作数据的方式的确是有的;你们各位,为什么不就此说说这样的用法!!!
哦,忘了告诉各位!!对于高级语言的编程我熟悉多种,但我是刚学DELPHI的!!
所以,以后我有不懂的地方,还请各位指正!!!
对于,我想提问者引申的地方,希望大家帮助补充。不要发一些无聊的帖子!
如果想灌水请到别处,KTOP不会希望您这样做。
伟人总是包含、谅解、解说;而X人总是挑刺!!! 我再此请教各位一个问题就是:
在什么程序语言中,这样用OPEN的方法INSERT、DELETE、UPDATE、SELECT操作数据的? 风花雪月 e梦情缘
------
风花雪月 e梦情缘 |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
wnhoo
高階會員 發表:75 回覆:443 積分:198 註冊:2003-04-22 發送簡訊給我 |
Justmade 兄: 我还是将上面的题目答案讲一下吧!!!
Query.open 对数据库的查询、统计、汇总,然后产生返回记录集的时候使用;
Query.ExecSQL用于INSERT、UPDATE、DELETE等数据库记录改变的操作, 但是在其它语言中可能出现混用的情况,比如ASP/ASP.NET中也可以使用RECOREDSET.open的方法,对数据库的INSERT、UPDATE、DELETE操作。但是它也提供一个专门对数据库的INSERT、UPDATE、DELETE操作的方法COMMAND. Ethan 兄:
所以我在上面发的帖子,给各位产生了误解!
风花雪月 e梦情缘
------
风花雪月 e梦情缘 |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
以下轉貼自 :
給 wnhoo ,也給關心事件的K.Top網友
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=30664 由於與本文 wnhoo 的回應有較大關連,所以在些轉貼一下,全文請看上面連結。 ------------------------------ 對你在這幾編的回文我有一些回應,也想借此對你作出一些提醒與建議,我知道你現在很難聽得進去;但若你的在本站報的年齡是真實年齡,你還很年輕,前面還有很多路要走;對這些建議留有個印象,到平心靜氣時想一想,或有其他狀況發生時對比一下,相信會對你有幫助的。 若我說得不對,亦歡迎你及各網友提出指正。
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |