線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1648
推到 Plurk!
推到 Facebook!

請教有關table name的問題

答題得分者是:carstyc
sssssuen
一般會員


發表:11
回覆:23
積分:6
註冊:2009-07-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-08-06 15:10:20 IP:158.132.xxx.xxx 訂閱
我需要寫一個程式在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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-08-06 16:51:24 IP:203.79.xxx.xxx 訂閱
完整的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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-08-06 17:04:43 IP:158.132.xxx.xxx 訂閱

===================引 用 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-08-06 17:10:00 IP:203.79.xxx.xxx 訂閱

你這神奇的資料庫,能不能透露一下是那一種資料庫啊...

即然可以成功 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-08-06 17:23:53 IP:158.132.xxx.xxx 訂閱


資料庫就是MySQL啊
我試過這個方法了
跟之前的方法一樣不成功

===================引 用 carstyc 文 章===================

你這神奇的資料庫,能不能透露一下是那一種資料庫啊...

即然可以成功 Create Table ,何不直接用字串組成就好

ADOQuery1.SQL.Add('create table if not exists ' tablename '(V1 TEXT,V2 TEXT)');


carstyc
資深會員


發表:16
回覆:254
積分:329
註冊:2003-07-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-08-06 17:48:57 IP:203.79.xxx.xxx 訂閱
那就很詭異了耶.....有錯誤訊息可參考嗎?


===================引 用 sssssuen 文 章===================


資料庫就是MySQL啊
我試過這個方法了
跟之前的方法一樣不成功

===================引 用 carstyc 文 章===================

你這神奇的資料庫,能不能透露一下是那一種資料庫啊...

即然可以成功 Create Table ,何不直接用字串組成就好

ADOQuery1.SQL.Add('create table if not exists ' tablename '(V1 TEXT,V2 TEXT)');


sssssuen
一般會員


發表:11
回覆:23
積分:6
註冊:2009-07-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-08-06 18:04:32 IP:158.132.xxx.xxx 訂閱

以下是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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-08-06 18:17:08 IP:203.79.xxx.xxx 訂閱
我有實際測試了一下,即使用字串去組成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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-08-06 18:24:05 IP:158.132.xxx.xxx 訂閱
找到問題了!
原來自己剛剛不小心把table name的string comment了
所以語法有問題

謝謝你的幫忙!
===================引 用 carstyc 文 章===================
我有實際測試了一下,即使用字串去組成SQL字串,也是可以Create Table出來沒問題。

我覺得應該是你的 SQL 組出來的結果有問題,建議你先把組好的 SQL 顯示出來,看看語法有沒有問題。

系統時間:2024-03-28 21:01:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!