我想要做以下事情。 1)創建一個數據庫。 2)時創建表,存儲程序等運行腳本(該腳本由SMS產生「生成腳本」選項)如何從Delphi運行數據庫腳本文件?
我發現以下代碼:http://www.delphipages.com/forum/showthread.php?t=181685 並將其修改成這樣:
嘗試
ADOQuery.ConnectionString := 'Provider=SQLOLEDB.1;Password=' +
edtPassword.Text + ';持續安全信息= TRUE;用戶ID =' + edtUser.Text + ';初始目錄=主人;數據源=' + edtServerName.Text;
ADOQuery.SQL.Clear; ADOQuery.SQL.Text := 'create DataBase ' + edtWebDBName.Text; ADOQuery.ExecSQL; // should check existance of database ADOWeb.Connected := false; ADOWeb.ConnectionString := 'Provider=SQLOLEDB.1;Password=' +
edtPassword.Text + ';持續安全信息= TRUE;用戶ID =' + edtUser.Text + ';初始目錄=' + edtWebDBName.Text + ';數據源=' + edtServerName 。文本; ADOWeb.Connected:= true;
ADOQuery.Connection := ADOWeb; ADOQuery.SQL.Clear; ADOQuery.SQL.LoadFromFile(edtScriptFileName.Text); ADOQuery.ExecSQL; except
這工作,直到運行腳本文件的點。然後它會產生一個異常:「GO」附近的語法錯誤。如果我在新創建的數據庫上運行SMS中的腳本,那很好。這個問題是由於一次運行多個SQL命令(腳本本質上是一長串命令/ GO語句?如何解決它?)
哦,作爲獎勵,任何關於快速檢查的想法在發送腳本之前查看新數據庫是否真實存在?(或者是否不必要,因爲如果創建失敗,它將生成異常?)
所有這些答案都可以使用。我認爲對於SMS生成的腳本,運行sqlcmd是一種方法。此外,我用下面的數據來獲得數據。 (39)+ edtWebDBName.Text + chr(39);其中,數據庫的名稱是數據庫的名稱。 ADOQuery.Open; if ADOQuery.Fields [0] .AsInteger = 0 then // DB不存在 – Rob 2011-05-13 15:28:58