Rob the GO statement is not recognized by ADO, so you must remove it from the script before executing it.
Now, to check if a database exists, you can run a query like this
select COUNT(*) from sys.databases where name='yourdatabasename'
check out this most basic example
suppose you have a script like this
CREATE TABLE Dummy.[dbo].tblUsers(ID INT, UserName VARCHAR(50)) GO INSERT INTO Dummy.[dbo].tblUsers (ID, UserName) VALUES (1, 'Jill') GO INSERT INTO Dummy.[dbo].tblUsers (ID, UserName) VALUES (2, 'John') GO INSERT INTO Dummy.[dbo].tblUsers (ID, UserName) VALUES (3, 'Jack') GO
Now, to fulfill this sentence, you can do something like this
const //in this case the script is inside of a const string but can be loaded from a file as well Script= 'CREATE TABLE Dummy.[dbo].tblUsers(ID INT, UserName VARCHAR(50)) '+#13#10+ 'GO '+#13#10+ 'INSERT INTO Dummy.[dbo].tblUsers (ID, UserName) VALUES (1, ''Jill'') '+#13#10+ 'GO '+#13#10+ 'INSERT INTO Dummy.[dbo].tblUsers (ID, UserName) VALUES (2, ''John'') '+#13#10+ 'GO '+#13#10+ 'INSERT INTO Dummy.[dbo].tblUsers (ID, UserName) VALUES (3, ''Jack'') '+#13#10+ 'GO '; var DatabaseExist : Boolean; i : Integer; begin try //check the connection if not ADOConnection1.Connected then ADOConnection1.Connected:=True; //make the query to check if the database called Dummy exist ADOQuery1.SQL.Add(Format('select COUNT(*) from sys.databases where name=%s',[QuotedStr('Dummy')])); ADOQuery1.Open; try //get the returned value, if is greater than 0 then exist DatabaseExist:=ADOQuery1.Fields[0].AsInteger>0; finally ADOQuery1.Close; end; if not DatabaseExist then begin //create the database if not exist ADOQuery1.SQL.Text:=Format('Create Database %s',['Dummy']); ADOQuery1.ExecSQL; ADOQuery1.Close; //load the script, remember can be load from a file too ADOQuery1.SQL.Text:=Script; //parse the script to remove the GO statements for i := ADOQuery1.SQL.Count-1 downto 0 do if StartsText('GO',ADOQuery1.SQL[i]) then ADOQuery1.SQL.Delete(i); //execute the script ADOQuery1.ExecSQL; ADOQuery1.Close; end; except on E:Exception do ShowMessage(E.Message); end; end;