請教有關table name的問題 |
答題得分者是:carstyc
|
sssssuen
一般會員 發表:11 回覆:23 積分:6 註冊:2009-07-17 發送簡訊給我 |
我需要寫一個程式在database 裡create table
而且table name需要以當天日期作名稱 但我用以下的程式並不成功 請問以下的pogram錯在哪裏呢? 是不是table name不可以variable的形式呢? 謝謝! function TForm1.GetMonthStringEng(dDate: TDateTime): String; const sMonth :array[1..12] of string =('January','February','March','April','May','June','July','August','September','October','November','December'); begin Result := sMonth[StrToInt( FormatDateTime('mm',dDate)) ]; end; procedure TForm1.Button1Click(Sender: TObject); var date: TDateTime; databaseName:string; begin date:=StrToDate(FormatDateTime('yyyy-mm-dd',now)); databaseName:=GetMonthStringEng(date) FormatDateTime('dd',now); ADOQuery1.Connection := ADOConnection1; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('create table if not exists :DBN'); ADOQuery1.SQL.Add('(V1 text,V2 text'); ADOQuery1.Parameters.ParamByName('DBN').Value:=databaseName; ADOQuery1.ExecSQL; end; end. |
carstyc
資深會員 發表:16 回覆:254 積分:329 註冊:2003-07-18 發送簡訊給我 |
完整的Create Table 語法應該還有別的字元,你好像少了不少字。
CREATE TABLE XXX if not exists XXX ( V1 text, V2 text ) 還有要注意你登入的帳號,是否有建立 Table 的權限。 還有,你這種做法,真的好嗎?由程式去建Table?一般用這種作法的好像不多耶。 改一下,用一個欄位來存你的日期資料,把所有的資料存在一個Table中會不會好一點。 CREATE TABLE XXX if not exists XXX ( DataDate text, V1 text, V2 text ) ===================引 用 sssssuen 文 章=================== 我需要寫一個程式在database 裡create table 而且table name需要以當天日期作名稱 但我用以下的程式並不成功 請問以下的pogram錯在哪裏呢? 是不是table name不可以variable的形式呢? 謝謝! function TForm1.GetMonthStringEng(dDate: TDateTime): String; const sMonth :array[1..12] of string =('January','February','March','April','May','June','July','August','September','October','November','December'); begin Result := sMonth[StrToInt( FormatDateTime('mm',dDate)) ]; end; procedure TForm1.Button1Click(Sender: TObject); var date: TDateTime; databaseName:string; begin date:=StrToDate(FormatDateTime('yyyy-mm-dd',now)); databaseName:=GetMonthStringEng(date) FormatDateTime('dd',now); ADOQuery1.Connection := ADOConnection1; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('create table if not exists :DBN'); ADOQuery1.SQL.Add('(V1 text,V2 text'); ADOQuery1.Parameters.ParamByName('DBN').Value:=databaseName; ADOQuery1.ExecSQL; end; end. |
sssssuen
一般會員 發表:11 回覆:23 積分:6 註冊:2009-07-17 發送簡訊給我 |
===================引 用 carstyc 文 章=================== 完整的Create Table 語法應該還有別的字元,你好像少了不少字。 CREATE TABLE XXX if not exists XXX ( V1 text, V2 text ) 還有要注意你登入的帳號,是否有建立 Table 的權限。 還有,你這種做法,真的好嗎?由程式去建Table?一般用這種作法的好像不多耶。 改一下,用一個欄位來存你的日期資料,把所有的資料存在一個Table中會不會好一點。 CREATE TABLE XXX if not exists XXX ( DataDate text, V1 text, V2 text ) 我曾試過用以下的syntax就成功了 所以不是權限問題 似乎是:DBN的問題... ADOQuery1.SQL.Add('create table if not exists August06 (V1 TEXT,V2 TEXT)'); 但因為日期會轉變 所以不能直接用August06 |
carstyc
資深會員 發表:16 回覆:254 積分:329 註冊:2003-07-18 發送簡訊給我 |
你這神奇的資料庫,能不能透露一下是那一種資料庫啊... 即然可以成功 Create Table ,何不直接用字串組成就好 ADOQuery1.SQL.Add('create table if not exists ' tablename '(V1 TEXT,V2 TEXT)'); ===================引 用 sssssuen 文 章=================== ===================引 用 carstyc 文 章=================== 完整的Create Table 語法應該還有別的字元,你好像少了不少字。 CREATE TABLE XXX if not exists XXX ( V1 text, V2 text ) 還有要注意你登入的帳號,是否有建立 Table 的權限。 還有,你這種做法,真的好嗎?由程式去建Table?一般用這種作法的好像不多耶。 改一下,用一個欄位來存你的日期資料,把所有的資料存在一個Table中會不會好一點。 CREATE TABLE XXX if not exists XXX ( DataDate text, V1 text, V2 text ) 我曾試過用以下的syntax就成功了 所以不是權限問題 似乎是:DBN的問題... ADOQuery1.SQL.Add('create table if not exists August06 (V1 TEXT,V2 TEXT)'); 但因為日期會轉變 所以不能直接用August06 |
sssssuen
一般會員 發表:11 回覆:23 積分:6 註冊:2009-07-17 發送簡訊給我 |
|
carstyc
資深會員 發表:16 回覆:254 積分:329 註冊:2003-07-18 發送簡訊給我 |
|
sssssuen
一般會員 發表:11 回覆:23 積分:6 註冊:2009-07-17 發送簡訊給我 |
以下是run時的error: Project Project1.exe raised exception class EOleException with message '[MySQL][ODBC 5.1 Driver][mysqld-5.4.1-beta-community]You have an error in your SQL syntax;check the manual that corresponds to your MySQLserver version for the right syntax to use near '(V1 text,V2 text)' at line 1'. Process stopped. Use Step or Run to continue ===================引 用 carstyc 文 章=================== 那就很詭異了耶.....有錯誤訊息可參考嗎? . |
carstyc
資深會員 發表:16 回覆:254 積分:329 註冊:2003-07-18 發送簡訊給我 |
我有實際測試了一下,即使用字串去組成SQL字串,也是可以Create Table出來沒問題。
我覺得應該是你的 SQL 組出來的結果有問題,建議你先把組好的 SQL 顯示出來,看看語法有沒有問題。 ===================引 用 sssssuen 文 章=================== 以下是run時的error: Project Project1.exe raised exception class EOleException with message '[MySQL][ODBC 5.1 Driver][mysqld-5.4.1-beta-community]You have an error in your SQL syntax;check the manual that corresponds to your MySQLserver version for the right syntax to use near '(V1 text,V2 text)' at line 1'. Process stopped. Use Step or Run to continue ===================引 用 carstyc 文 章=================== 那就很詭異了耶.....有錯誤訊息可參考嗎? . |
sssssuen
一般會員 發表:11 回覆:23 積分:6 註冊:2009-07-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |