全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1149
推到 Plurk!
推到 Facebook!

請問我的sql語法哪裡錯了

尚未結案
ibm
一般會員


發表:4
回覆:3
積分:1
註冊:2004-03-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-07 22:03:58 IP:203.73.xxx.xxx 未訂閱
Query1.SQL.Add('DROP TABLE IF EXISTS DDD'); Query1.SQL.Add('CREATE TABLE ''DDD'' ('); Query1.SQL.Add('ID int(11) NOT NULL auto_increment,'); Query1.SQL.Add('Name char(35) NOT NULL default '','); Query1.SQL.Add('CountryCode char(3) NOT NULL default '','); Query1.SQL.Add('District char(20) NOT NULL default '','); Query1.SQL.Add('Population int(11) NOT NULL default ''0'','); Query1.SQL.Add('PRIMARY KEY (ID)'); Query1.SQL.Add(') TYPE=MyISAM;'); Query1.ExecSQL; compile有過 但是 執行時出現missing right quote ??? 到底是哪裡疏漏了
yachanga
資深會員


發表:24
回覆:335
積分:296
註冊:2003-09-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-07 22:16:25 IP:61.230.xxx.xxx 未訂閱
Query1.SQL.Add('DROP TABLE IF EXISTS DDD'); Query1.SQL.Add('CREATE TABLE ''DDD'' ('); Query1.SQL.Add('ID int(11) NOT NULL auto_increment,'); Query1.SQL.Add('Name char(35) NOT NULL default '''','); Query1.SQL.Add('CountryCode char(3) NOT NULL default '''','); Query1.SQL.Add('District char(20) NOT NULL default '''','); Query1.SQL.Add('Population int(11) NOT NULL default ''0'','); Query1.SQL.Add('PRIMARY KEY (ID)'); Query1.SQL.Add(') TYPE=MyISAM;'); Query1.ExecSQL; ~悠遊法國號~
ibm
一般會員


發表:4
回覆:3
積分:1
註冊:2004-03-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-07 22:39:01 IP:203.73.xxx.xxx 未訂閱
改了之後更奇怪了 
yachanga
資深會員


發表:24
回覆:335
積分:296
註冊:2003-09-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-07 22:52:18 IP:61.230.xxx.xxx 未訂閱
您的語法可以參考 http://www.mysql.com/doc/en/CREATE_TABLE.html    Query1.SQL.Add('DROP TABLE IF EXISTS DDD'); Query1.SQL.Add('CREATE TABLE DDD ('); Query1.SQL.Add('ID int(11) NOT NULL auto_increment,'); Query1.SQL.Add('Name char(35) NOT NULL default '''','); Query1.SQL.Add('CountryCode char(3) NOT NULL default '''','); Query1.SQL.Add('District char(20) NOT NULL default '''','); Query1.SQL.Add('Population int(11) NOT NULL default ''0'','); Query1.SQL.Add('PRIMARY KEY (ID)'); Query1.SQL.Add(') TYPE=MyISAM;'); Query1.ExecSQL; ~悠遊法國號~ 發表人 - yachanga 於 2004/04/07 22:58:17
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-07 23:06:19 IP:219.129.xxx.xxx 未訂閱
引言: Query1.SQL.Add('DROP TABLE "DDD"IF EXISTS DDD'); Query1.SQL.Add('CREATE TABLE "DDD" ('); Query1.SQL.Add('ID int(11) NOT NULL auto_increment,'); Query1.SQL.Add('Name char(35) NOT NULL default '','); Query1.SQL.Add('CountryCode char(3) NOT NULL default '','); Query1.SQL.Add('District char(20) NOT NULL default '','); Query1.SQL.Add('Population int(11) NOT NULL default ''0'','); Query1.SQL.Add('PRIMARY KEY (ID)'); Query1.SQL.Add(') TYPE=MyISAM;'); Query1.ExecSQL; compile有過 但是 執行時出現missing right quote ??? 到底是哪裡疏漏了
——行径窄处,留一步与人行——
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-07 23:08:16 IP:203.204.xxx.xxx 未訂閱
引言: Query1.SQL.Add('DROP TABLE IF EXISTS DDD'); Query1.SQL.Add('CREATE TABLE DDD ('); compile有過 但是 執行時出現missing right quote ??? 到底是哪裡疏漏了
ibm 你好 1.DROP與CREATE 可以同時執行? 滿懷疑的,還是我少見了。 2.SQL指令對Compiler來說只是一串文字罷了,只要不是多了或少了[']單引號就OK了,至於SQL指令對不對須要到執行時才能知道對錯。
ibm
一般會員


發表:4
回覆:3
積分:1
註冊:2004-03-18

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-07 23:08:42 IP:203.73.xxx.xxx 未訂閱
還是不行ㄟ 好怪異ㄛ 同樣的sql 我用memo.txt 丟給拋Query.sql.add()就ok 但是寫成這樣分段指定就不行 唉  傷腦筋
yachanga
資深會員


發表:24
回覆:335
積分:296
註冊:2003-09-27

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-07 23:18:11 IP:61.230.xxx.xxx 未訂閱
把 DROP & Create 拆開好了 1. Query1.sql.clear; Query1.SQL.Add('DROP TABLE IF EXISTS DDD'); Query1.ExecSQL; Query1.sql.clear; Query1.SQL.Add('CREATE TABLE DDD ('); Query1.SQL.Add('ID int(11) NOT NULL auto_increment,'); Query1.SQL.Add('Name char(35) NOT NULL default '''','); Query1.SQL.Add('CountryCode char(3) NOT NULL default '''','); Query1.SQL.Add('District char(20) NOT NULL default '''','); Query1.SQL.Add('Population int(11) NOT NULL default ''0'','); Query1.SQL.Add('PRIMARY KEY (ID)'); Query1.SQL.Add(') TYPE=MyISAM;'); Query1.ExecSQL;    2. Query1.sql.clear; Query1.SQL.Add('CREATE TABLE IF NOT EXISTS DDD ('); Query1.SQL.Add('ID int(11) NOT NULL auto_increment,'); Query1.SQL.Add('Name char(35) NOT NULL default '''','); Query1.SQL.Add('CountryCode char(3) NOT NULL default '''','); Query1.SQL.Add('District char(20) NOT NULL default '''','); Query1.SQL.Add('Population int(11) NOT NULL default ''0'','); Query1.SQL.Add('PRIMARY KEY (ID)'); Query1.SQL.Add(') TYPE=MyISAM;'); Query1.ExecSQL; ~悠遊法國號~
ibm
一般會員


發表:4
回覆:3
積分:1
註冊:2004-03-18

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-07 23:39:53 IP:203.73.xxx.xxx 未訂閱
Dear yachanga 你的兩個方法我都試了 都可行 感謝你 Dear Chance36 同樣也感謝你的點醒 不過這群sql指令我是取自www.mysql.com 我架好了mysql 之後 在mysql 的 shell下 執行他的world.sql 建立了資料庫與資料 然後想看看可不可以動態地由程式控制table的產生於是截取一段sql語法進行測試 同樣的sql 我用memo.text 丟給拋Query.sql.add()就ok,但是, 改成我所post的格式就死翹翹了,所以我才覺得奇怪 因此 是否DROP與CREATE 可不可以同時執行我不是很清楚 ,所以如果您能告訴我為何不可以 小弟將不勝感激
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-04-08 00:10:52 IP:219.129.xxx.xxx 未訂閱
ibm你好:试试这样写: IF EXISTS (SELECT name From sysobjects where name='DDD')   DROP TABLE DDD go create table DDD ( ID integer NOT NULL auto_increment, Name varchar(35) NOT NULL , CountryCode varchar(3) NOT NULL , District varchar(20) NOT NULL , Population integer NOT NULL , PRIMARY KEY (ID) ); ——行径窄处,留一步与人行——
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-04-08 20:43:43 IP:211.20.xxx.xxx 未訂閱
引言: 因此 是否DROP與CREATE 可不可以同時執行我不是很清楚 ,所以如果您能告訴我為何不可以 小弟將不勝感激
ibm 你好 以目前Delphi所提供的SQL相關的元件來說獨缺TSQLScrip(虛構的類別)的元件,其他TQuery、TAdoDataSet、TAdoquery....等可以下達SQL指令的元件,它一次只能下達一道SQL指令,除非資料庫本身可接受多個指令的SQL字串(不管是不是SQL Script),一般遇到這需求,也只有分解成一道一道的SQL指令來執行。 發表人 - chance36 於 2004/04/09 00:14:36
系統時間:2024-05-17 11:41:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!