請問我的sql語法哪裡錯了 |
尚未結案
|
ibm
一般會員 發表:4 回覆:3 積分:1 註冊:2004-03-18 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
|
yachanga
資深會員 發表:24 回覆:335 積分:296 註冊:2003-09-27 發送簡訊給我 |
您的語法可以參考
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 發送簡訊給我 |
引言: 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 發送簡訊給我 |
引言: 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 發送簡訊給我 |
|
yachanga
資深會員 發表:24 回覆:335 積分:296 註冊:2003-09-27 發送簡訊給我 |
把 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 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
引言: 因此 是否DROP與CREATE 可不可以同時執行我不是很清楚 ,所以如果您能告訴我為何不可以 小弟將不勝感激ibm 你好 以目前Delphi所提供的SQL相關的元件來說獨缺TSQLScrip(虛構的類別)的元件,其他TQuery、TAdoDataSet、TAdoquery....等可以下達SQL指令的元件,它一次只能下達一道SQL指令,除非資料庫本身可接受多個指令的SQL字串(不管是不是SQL Script),一般遇到這需求,也只有分解成一道一道的SQL指令來執行。 發表人 - chance36 於 2004/04/09 00:14:36 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |