在SQLDataSet中执行我们输入的DDL语句,并观察执行结果。
这里为了省输入的时间,从先输好的记事本中复制的SQL语句。效果图:
**************************************************************************************
具体操作:
**************************************************************************************
DBGrid1.DataSource->DataSource1.DataSet->ClientDataSet1.ProviderName->DataSetProvider1->
SQLDataset1.SQLConnection1->具体数据库(这里连接的是oracle中的新建的Persons(根据自己新建的表名)表);
这里SQLDataset1和ClientDataSet1都不能设置为TRUE,因为表还没建起来,会返回个错误。
现在在放入一个SQLDataSet2控件执行我们的DDL语句。
现在窗体结构应该如下图:
**************************************************************************************
主要代码:
**************************************************************************************
procedure TForm3.ExeSQLScript;
var
strScript:string;
strSQL:string;
iPos:integer;
begin
strScript:=Memo1.Lines.Text;
while Length(strScript)>0 do
begin
iPos:=Pos(‘;‘,strScript);
if iPos>0 then
begin
strSQL:= Copy(strScript,1,iPos-1);
SQLDataSet2.CommandText:=strSQL;
SQLDataset2.ExecSQL(true);
Delete(strScript,1,iPos);
end else
begin
break;
end;
end;
if ClientDataSet1.Active then
begin
ClientDataSet1.Refresh;
end else
begin
ClientDataSet1.Active:=true;
end;
end; procedure TForm3.Button1Click(Sender: TObject);
begin
ExeSQLScript;
end;
能上代码在DELPHI XE5 ,WIN7 X64,ORACLE 11G中测试通过。