在SQLDataSet中执行我们输入的DDL语句,并观察执行结果。
这里为了省输入的时间,从先输好的记事本中复制的SQL语句。效果图:
**************************************************************************************
具体操作:
**************************************************************************************
DBGrid1.DataSource->DataSource1.DataSet->ClientDataSet1.ProviderName->DataSetProvider1.DataSet->
SQLDataset1.SQLConnection->SQLConnection1具体数据库(这里连接的是oracle中的新建的Persons(根据自己新建的表名)表);
这里SQLDataset1和ClientDataSet1都不能设置为TRUE,因为表还没建起来,会返回个错误。
现在在放入一个SQLDataSet2控件,SQLDataset2.SQLConnection->SQLConnection1执行我们的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中测试通过。