小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

 印度阿三17 2019-06-25

我有一個連接到MySQL數(shù)據(jù)庫的delphi應(yīng)用程序,但是,我想為我的最終用戶創(chuàng)建一個簡單的方法來實現(xiàn)MySQL數(shù)據(jù)庫.我想在我的應(yīng)用程序中創(chuàng)建一個按鈕,用戶可以按這個按鈕刪除當前的scehma實例,并使用我的應(yīng)用程序需要運行的正確表和列創(chuàng)建一個新模式.

我編寫了代碼來創(chuàng)建新數(shù)據(jù)庫.它如下:

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中正常運行,但是在執(zhí)行代碼時我收到SQL語法錯誤.我得到了:

error in your SQL syntax near ‘USE fakeschema; CREATE TABLE table1 (IDtable1 int(11) PRIMARY KEY NO’

我正在使用ADOConnection鏈接到數(shù)據(jù)源.按下按鈕后,我正在編寫連接字符串.我正在使用ADOQuery來執(zhí)行SQL代碼.

這是我用來連接數(shù)據(jù)庫的代碼片段:

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;  

我使用錯誤的工具/方法嗎?我是MySQL新手,我目前正在學習Delphi.

解決方法:

正如我的一條評論中所提到的,問題是嘗試在單個TAdoQuery組件中執(zhí)行多個單獨的SQL語句.

在一個理想的世界中,你會有一個像MyDAC這樣的組件,它有一個腳本組件可以代替TAdoQuery使用(MyDAC會給你帶來其他好處,比如不必通過ODBC連接).我不知道是否有任何免費的MySQL組件,其中有一個腳本組件.

另一種方法是您可以創(chuàng)建腳本文件(例如createFakeSchema.sql)并通過命令行執(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)建你的腳本文件,自己通過MySQL測試它,然后當你知道你的腳本工作時,你可以通過你的程序運行它.如果要在執(zhí)行時隱藏命令窗口,請將ShellExecute中的SW_SHOW更改為SW_HIDE.這樣你甚至根本不需要任何組件 – 只需在路徑中訪問mysql.exe或在cmd語句中包含完整路徑即可.

這是在MySQL 5.1中完成的,所以希望適用于3.5 …

來源:https://www./content-2-266251.html

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多