我有一個(gè)連接到MySQL數(shù)據(jù)庫(kù)的delphi應(yīng)用程序,但是,我想為我的最終用戶創(chuàng)建一個(gè)簡(jiǎn)單的方法來(lái)實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù).我想在我的應(yīng)用程序中創(chuàng)建一個(gè)按鈕,用戶可以按這個(gè)按鈕刪除當(dāng)前的scehma實(shí)例,并使用我的應(yīng)用程序需要運(yùn)行的正確表和列創(chuàng)建一個(gè)新模式.
我編寫(xiě)了代碼來(lái)創(chuàng)建新數(shù)據(jù)庫(kù).它如下:
CREATE SCHEMA IF NOT EXISTS fakeschema;
USE fakeschema;
CREATE TABLE table1
(IDtable1 int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
Line1 varchar(45),
Line2 varchar(45));
代碼在MySQL中正常運(yùn)行,但是在執(zhí)行代碼時(shí)我收到SQL語(yǔ)法錯(cuò)誤.我得到了:
error in your SQL syntax near ‘USE fakeschema; CREATE TABLE table1 (IDtable1 int(11) PRIMARY KEY NO’
我正在使用ADOConnection鏈接到數(shù)據(jù)源.按下按鈕后,我正在編寫(xiě)連接字符串.我正在使用ADOQuery來(lái)執(zhí)行SQL代碼.
這是我用來(lái)連接數(shù)據(jù)庫(kù)的代碼片段:
ADOC.ConnectionString := 'PROVIDER = MSDASQL; DRIVER={MySQL ODBC 3.51 Driver};
SERVER=localhost; Data Source=faketest; DATABASE=fakeschema; USER ID=root;
PASSWORD=pass; OPTION=3;';
ADOC.DefaultDatabase := 'fakeschema';
ADOC.Connected := True;
我使用錯(cuò)誤的工具/方法嗎?我是MySQL新手,我目前正在學(xué)習(xí)Delphi. 解決方法: 正如我的一條評(píng)論中所提到的,問(wèn)題是嘗試在單個(gè)TAdoQuery組件中執(zhí)行多個(gè)單獨(dú)的SQL語(yǔ)句.
在一個(gè)理想的世界中,你會(huì)有一個(gè)像MyDAC這樣的組件,它有一個(gè)腳本組件可以代替TAdoQuery使用(MyDAC會(huì)給你帶來(lái)其他好處,比如不必通過(guò)ODBC連接).我不知道是否有任何免費(fèi)的MySQL組件,其中有一個(gè)腳本組件.
另一種方法是您可以創(chuàng)建腳本文件(例如createFakeSchema.sql)并通過(guò)命令行執(zhí)行它.例如:
createFakeSchema.sql:
CREATE SCHEMA IF NOT EXISTS fakeschema;
USE fakeschema;
CREATE TABLE table1
(IDtable1 int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
Line1 varchar(45),
Line2 varchar(45));
示例源代碼:
procedure TfrmMain.DoExecuteScriptFile;
var
cmd: string;
KeepOpen: Boolean;
begin
KeepOpen := True;
// option to automatically close window once execution is done
// for releasing you would not want it kept open, but handy for debugging
if KeepOpen then
cmd := '/k '
else
cmd := '/c ';
cmd := cmd Format(' mysql -uroot -proot -D%s < "%s"', ['FakeSchema', 'createFakeSchema.sql']);
ShellExecute(handle,'open', 'cmd.exe', Pchar(cmd), nil, SW_SHOW );
end;
這樣你就可以在某處外部創(chuàng)建你的腳本文件,自己通過(guò)MySQL測(cè)試它,然后當(dāng)你知道你的腳本工作時(shí),你可以通過(guò)你的程序運(yùn)行它.如果要在執(zhí)行時(shí)隱藏命令窗口,請(qǐng)將ShellExecute中的SW_SHOW更改為SW_HIDE.這樣你甚至根本不需要任何組件 – 只需在路徑中訪問(wèn)mysql.exe或在cmd語(yǔ)句中包含完整路徑即可.
這是在MySQL 5.1中完成的,所以希望適用于3.5 … 來(lái)源:https://www./content-2-266251.html
|