日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Delphi – 在運(yùn)行時(shí)創(chuàng)建MySQL數(shù)據(jù)庫(kù)

 印度阿三17 2019-06-25

我有一個(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

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多