gpt4 book ai didi

delphi - 通过SQL语句和adoquery在delphi中删除数据库

转载 作者:行者123 更新时间:2023-12-03 15:56:30 25 4
gpt4 key购买 nike

我想通过sql语句删除数据库,我的代码是这样的,使用delphi XE和ADO进行数据库访问,服务器是MSSQL

  aDBConnection.ConnectionString :=  'Provider=SQLOLEDB.1;Integrated    

Security=SSPI;Persist Security Info=False;Initial Catalog='
+ DatabaseName + '; Data Source=' + Servername;

aDBConnection.Connected := true;

aQuery.Connection := aDBConnection;

aQuery.add.sql (' drop database ' + DatabaseName );

aQuery.Execsql.

使用此代码序列运行许多其他 sql 语句没问题,但他拒绝删除数据库,因为声称“数据库正在使用中”。

我猜这是真的,因为我确实有一个到数据库的连接,但如何做其他的,我需要查询将 sql 发送到服务器......

最佳答案

不需要显式关闭连接,正如 TLama 提到的,您所需要的只是 USE更改您的连接。也不需要关闭数据集,除非它们是通过 CursorLocation := clUseServer; 打开的。即使在更改为 master (Button_ChangeToMasterClick) 后,您也可以进行编辑打开数据集,但由于 CursorLocation 是 clUseClient,您甚至可以删除数据库。删除后编辑自然会出错。

Const
aDatabaseName='DeleteMeAfterUse';

procedure TForm3.ButtonCreateOpen_Click(Sender: TObject);
var
Ads: TAdodataset;
begin
AC.ConnectionString := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source=127.0.0.1';
AC.Connected := true;
AC.Execute('Create DataBase ' + aDatabaseName);
AC.Execute('Use ' + aDatabaseName); // change connection to 'DeleteMeAfterUse'
AC.Execute('Create Table Test (ID int)'); // will be created in DeleteMeAfterUse
AC.Execute('Insert into Test Values (1)');
Ads := TAdodataset.Create(self); // Display data on surface
// Ads.CursorLocation := clUseServer; **
// ** don't use clUseServer if you want to delete the database without closing the datasets
// default is clUseClient

With Ads do
begin
Connection := AC;
CommandText := 'Select * from Test';
Active := true;
end;
DataSource1.DataSet := Ads; // Conected to a DBGrid for editing
end;

procedure TForm3.Button_ChangeToMasterClick(Sender: TObject);
begin
AC.Execute('Use master'); // change connection to master , any other database will work too
end;

procedure TForm3.Button_DropDatabaseClick(Sender: TObject);
begin
AC.Execute('Drop Database ' + aDatabaseName);
end;

关于delphi - 通过SQL语句和adoquery在delphi中删除数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18981929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com