我想要做以下事情。 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