最近在做一个安装包,需要在软件卸载时将数据库删除,代码如下:
function DeleteDB(szLoginName, szPassword, svSQLsvr, szDBName) STRING szSQL,szSyntal, szdatabase,szWaitTxt;
begin
szWaitTxt=" 正在删除数据库....";
SdShowMsg (szWaitTxt, TRUE);
szSyntal = TARGETDIR^"SQL Syntax\\Check_Delete_DB.sql";
if (IsExistDB(szLoginName,szPassword,svSQLsvr, szDBName) == TRUE) then
szdatabase = "/E "+"/S "+svSQLsvr+" -i "+szSyntal;
if (LaunchAppAndWait("osql.exe", szdatabase,WAIT)<0) then;
MessageBox ("删除数据库失败!",SEVERE);
SdShowMsg (szWaitTxt, FALSE);
return FALSE;
endif;
SdShowMsg (szWaitTxt, FALSE);
return TRUE;
endif;
SdShowMsg (szWaitTxt, FALSE); return FALSE;end; function IsExistDB(szLoginName, szPassword, svSQLsvr, szDBName) BOOL bExist; NUMBER i; STRING szTemp; VARIANT objSQL;begin objSQL = CreateObject("SQLDMO.SQLServer");
if IsObject(objSQL) then
objSQL.LoginSecure = TRUE;
objSQL.Connect(svSQLsvr, szLoginName, szPassword);
bExist = FALSE;
for i = 1 to objSQL.Databases.Count
StrToUpper(szTemp, objSQL.Databases.Item(i).Name);
if (szTemp == szDBName) then
bExist = TRUE;
return bExist;
endif;
endfor;
endif; return bExist;end;Check_Delete_DB.sql内容很简单,如下:use master;
GO
DROP DATABASE ITS;
GO但在InstallShield的OnMainUIAfter下调用的DeleteDB()后,然后用SQL Server Express的SQL Server管理器打开后发现ITS数据库仍在在里面,但下面的表和其他内容都被删除了,只留下了ITS数据库空壳在里面,不知什么原因,请各位大虾帮忙看下!只有一点分了,全部送上!!!
function DeleteDB(szLoginName, szPassword, svSQLsvr, szDBName) STRING szSQL,szSyntal, szdatabase,szWaitTxt;
begin
szWaitTxt=" 正在删除数据库....";
SdShowMsg (szWaitTxt, TRUE);
szSyntal = TARGETDIR^"SQL Syntax\\Check_Delete_DB.sql";
if (IsExistDB(szLoginName,szPassword,svSQLsvr, szDBName) == TRUE) then
szdatabase = "/E "+"/S "+svSQLsvr+" -i "+szSyntal;
if (LaunchAppAndWait("osql.exe", szdatabase,WAIT)<0) then;
MessageBox ("删除数据库失败!",SEVERE);
SdShowMsg (szWaitTxt, FALSE);
return FALSE;
endif;
SdShowMsg (szWaitTxt, FALSE);
return TRUE;
endif;
SdShowMsg (szWaitTxt, FALSE); return FALSE;end; function IsExistDB(szLoginName, szPassword, svSQLsvr, szDBName) BOOL bExist; NUMBER i; STRING szTemp; VARIANT objSQL;begin objSQL = CreateObject("SQLDMO.SQLServer");
if IsObject(objSQL) then
objSQL.LoginSecure = TRUE;
objSQL.Connect(svSQLsvr, szLoginName, szPassword);
bExist = FALSE;
for i = 1 to objSQL.Databases.Count
StrToUpper(szTemp, objSQL.Databases.Item(i).Name);
if (szTemp == szDBName) then
bExist = TRUE;
return bExist;
endif;
endfor;
endif; return bExist;end;Check_Delete_DB.sql内容很简单,如下:use master;
GO
DROP DATABASE ITS;
GO但在InstallShield的OnMainUIAfter下调用的DeleteDB()后,然后用SQL Server Express的SQL Server管理器打开后发现ITS数据库仍在在里面,但下面的表和其他内容都被删除了,只留下了ITS数据库空壳在里面,不知什么原因,请各位大虾帮忙看下!只有一点分了,全部送上!!!
谁知道你的sql文件是怎么写的?
这和osql毛关系都没有。