Install Shield制作安装包技巧(SQL篇)

SQL数据库的操作我们首先要判断SQL Server是否安装,然后启动SQL Server

再通过osql.exe执行SQL语句进行数据库操作。 下面是针对这几种操作的一些函数:

 

1、检查SQL Server是否安装

 

prototype CheckSQL();          

function CheckSQL()

       BOOL bSuccess;

       NUMBER nType, nvSize;

       STRING szVer;

       STRING szSetupVer, szSetupPath;

begin

       RegDBSetDefaultRoot ( HKEY_LOCAL_MACHINE );

       szSetupPath = "SOFTWARE//Microsoft//MSSQLServer//Setup";

       szSetupVer = "SOFTWARE//Microsoft//MSSQLServer//MSSQLServer//CurrentVersion";

       //获取SQL Server版本

       nType = REGDB_STRING;

       if (RegDBGetKeyValueEx ( szSetupVer, "CurrentVersion" , nType , szVer , nvSize ) < 0) then

              bSuccess = FALSE;

       else

              //获取SQL Server安装路径

              if (RegDBGetKeyValueEx ( szSetupPath, "SQLPath" , nType , szSQLPATH , nvSize ) < 0) then

                     bSuccess = FALSE;

              else

                     bSuccess = TRUE;

              endif;

       endif;

      

       return bSuccess;

end;

 

2、检查SQL Server版本号,是否安装了SP3

prototype CheckSQLVersion();   

function CheckSQLVersion()

       BOOL bSuccess;

       NUMBER nType, nvSize;

       STRING szVer;

       STRING szSetupVer;

begin

    RegDBSetDefaultRoot ( HKEY_LOCAL_MACHINE ); 

    bSuccess = FALSE;

    szSetupVer = "SOFTWARE//Microsoft//MSSQLServer//MSSQLServer//CurrentVersion";

    nType = REGDB_STRING;

      if (RegDBGetKeyValueEx ( szSetupVer, "CSDVersion" , nType , szVer , nvSize ) < 0) then

              bSuccess = FALSE;

       else

           if szVer = '8.00.761' then

               bSuccess = TRUE;

           endif;

       endif;        

    return bSuccess;

end;

 

3、启动SQL Server服务器

prototype StartSQLServr(STRING, STRING);         

                                //传入用户名,用户密码

 

function StartSQLServr(szLoginName, szPassword)

       BOOL bSuccess;

       VARIANT objSQL;

begin

       objSQL = CreateObject("SQLDMO.SQLServer");

       if IsObject(objSQL) then

              try

                     try

                            objSQL.Start(TRUE, "(Local)", szLoginName, szPassword);

                     catch

                            objSQL.Connect("(Local)", szLoginName, szPassword);

                     endcatch;

              catch

                     bSuccess = FALSE;

                     return bSuccess;

              endcatch;

       else

              bSuccess = FALSE;

              return bSuccess;

       endif;

   

    if objSQL.VerifyConnection then

           bSuccess = TRUE;

    else

           bSuccess = FALSE;

    endif;

   

    return bSuccess;

end;

 

4、检查数据库是否已经存在

prototype IsExistDB(STRING, STRING, STRING);     

                                                        //传入用户名,用户密码,数据库名

function IsExistDB(szLoginName, szPassword, szDBName)

       BOOL bExist;

       NUMBER i;

       STRING szTemp;

       VARIANT objSQL;

begin

       objSQL = CreateObject("SQLDMO.SQLServer");

      

       objSQL.Connect("(Local)", 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;

      

       return bExist;

 

end;

 

5、删除数据库

prototype DeleteDB(STRING, STRING, STRING);         

                                                        //传入用户名,用户密码,数据库名

function DeleteDB(szLoginName, szPassword, szDBName)

       STRING szSQL;

      

begin

      

    szSQL = "declare @dttm varchar(55) /n"

                + "select  @dttm=convert(varchar,getdate(),113)/n"

             + "raiserror('Beginning Check Database at %s ....',1,1,@dttm) with nowait /n"

             + "GO /n"

             + "use master /n"

             + "go /n"

             + "if exists (select * from sysdatabases where name='" + szDBName + "') /n"

             + "begin /n"

             + "raiserror('Dropping existing " + szDBName + " database ....',0,1) /n"

             + "  DROP database " + szDBName + "/n"

             + "end /n"

             + " GO /n"

             + "CHECKPOINT /n"

             + "go /n";  

            

 

    if !ExecuteSQL(szLoginName, szPassword, szSQL) then

       return FALSE;

    endif;    

  

    return TRUE;

   

end;

 

 

      

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值