Hãy thử điều này:
String sqlCommandText = @"
ALTER DATABASE " + DbName + @" SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DROP DATABASE [" + DbName + "]";
Ngoài ra hãy chắc chắn rằng mà chuỗi kết nối của bạn mặc định cho bạn là master
cơ sở dữ liệu hoặc bất kỳ cơ sở dữ liệu nào khác ngoài cơ sở dữ liệu bạn đang bỏ qua!
Ngoài ra, bạn thực sự không cần tất cả những thứ đó xung quanh các truy vấn của mình. ConnectionState sẽ luôn bắt đầu Closed
, vì vậy bạn không cần phải kiểm tra điều đó. Tương tự như vậy, gói kết nối của bạn trong một using
khối loại bỏ sự cần thiết phải đóng hoặc hủy kết nối một cách rõ ràng. Tất cả những gì bạn thực sự cần làm là:
String Connectionstring = CCMMUtility.CreateConnectionString(false, txt_DbDataSource.Text, "master", "sa", "happytimes", 1000);
using(SqlConnection con = new SqlConnection(Connectionstring)) {
con.Open();
String sqlCommandText = @"
ALTER DATABASE " + DbName + @" SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DROP DATABASE [" + DbName + "]";
SqlCommand sqlCommand = new SqlCommand(sqlCommandText, con);
sqlCommand.ExecuteNonQuery();
}
result = 1;