INNO SETUP数据库的连接与创建

原文:INNO SETUP数据库的连接与创建

 说明一下:这块程序的前半部分在INNO SETUP的实例里面就有,而后面如果对数据库进行备份和还原在实例里面没有,在网上也不好找,是本人费了好大劲一句一句试出来的,请大家转摘时注明,以表示对个人劳动的尊重。谢谢!

[Code]

{--- SQLDMO ---}    //关于SQLDMO的相关知识大家可以去网上搜

const
//SQL服务器名称,这个名称在安装SQL时会要求有个服务器名称的输入,所有每台机器上打开SQL服务器时看到的名称都不一样,如我如下图,但这里我们可以用一个通用的名称,就是(local),表示这个服务器是本地的。这样就可以了。

SQLServerName = '(LOCAL)';     
SQLDMOGrowth_MB = 0;     

//这是创建一个按钮按下的事件,这个按钮就是在安装向导中页面中建立的一个“配置数据库”的按钮
procedure SQLDMOButtonOnClick(Sender: TObject);
var
//用到的一些变量
SQLServer, Database, DBFile, LogFile: Variant;
IDColumn, NameColumn, Table,oBackup,oRestore: Variant;
db_path:string;
//这个变量用来保存读取注册表的键值 
ResultStr: String;
begin
{ Create the main SQLDMO COM Automation object }

//检查是否已安装SQL
try
    SQLServer := CreateOleObject('SQLDMO.SQLServer');
except
    RaiseException('您还没有安装SQL数据库.'#13#13'(Error ''' + GetExceptionMessage + ''' occurred)');
end;

{ Connect to the Microsoft SQL Server }

//连接SQL
SQLServer.LoginSecure := True;
SQLServer.Connect(SQLServerName);

//MsgBox('连接到SQL服务器 ''' + SQLServerName + '''.', mbInformation, mb_Ok);

{ Setup a database }

//创建SQL数据库文件
Database := CreateOleObject('SQLDMO.Database');
Database.Name := 'dbase';    //要创建的数据库名称

DBFile := CreateOleObject('SQLDMO.DBFile');
DBFile.Name := 'ISData1';
//数据库记录
DBFile.PhysicalName := 'c:/program files/microsoft sql server/mssql/data/dbase_Data.MDF';
DBFile.PrimaryFile := True;
DBFile.FileGrowthType := SQLDMOGrowth_MB;
DBFile.FileGrowth := 1;

Database.FileGroups.Item('PRIMARY').DBFiles.Add(DBFile);

LogFile := CreateOleObject('SQLDMO.LogFile');
LogFile.Name := 'ISLog1';
//数据库日记
LogFile.PhysicalName := 'c:/program files/microsoft sql server/mssql/data/dbase_Log.LDF';

Database.TransactionLog.LogFiles.Add(LogFile);

{ Add the database }

//添加数据库
SQLServer.Databases.Add(Database);

//MsgBox('Added database ''' + Database.Name + '''.', mbInformation, mb_Ok);

//数据备份
    oBackup := CreateOleObject('SQLDMO.Backup');     //创建一个备份对象
    oBackup.Database := 'louyu';       //要备份的数据库名称
    oBackup.Files := 'f:/louyu3.bak';   //备份到什么地方
    oBackup.BackupSetName := 'louyu3.bak';     //备份的名称
    oBackup.BackupSetDescription := 'bakDescription';
    oBackup.Initialize := true;
    oBackup.SQLBackup(sqlServer);    //执行SQL备份操作
      
//数据还原

重点说明:

//数据库的备份文件在打好的包中的某个位置,要还原数据库首先要找到备份的文件,找备份的文件的话在这之前还要知道软件安装到了什么地方,也就是安装路径。在程序安装时我们在注册表中建立了相关信息,其中有软件安装路径的记录,关于注册表请查阅前面写的“INNO SETUP注册表的添加与读取”。
为什么还原数据库时用这种方法呢,好像是绕了个圈子一样,其实我也认为这可能不是一种好方法,但是在这我不知道还有什么别的方法来获得安装包中的数据(文件)或软件要安装的路径。{app}、{pf}等在这都无法直接使用,所以才用了这种笨方法。
如果哪位朋友有好方法,请告知我。

//从注册表中获得程序安装的路径,根据路径找到还原数据库的备份文件。
if RegQueryStringValue(HKLM, 'SOFTWARE/*******', 'Server', ResultStr) then
begin
    ResultStr := RemoveQuotes(ResultStr);
    msgbox(resultstr,mbinformation,mb_ok);
    try
      oRestore := CreateOleObject('SQLDMO.Restore');      //创建还原对象
      oRestore.Database := 'dbase';          //还原的数据库名称
      db_path:=resultstr + '/数据库文件/dbase.bak';          //备份文件的路径
      MsgBox(db_path,mbinformation,mb_ok);            //测试一下看路径对不对
      oRestore.files :=db_path;              //指定备份文件
      oRestore.replacedatabase := true;
      oRestore.sqlrestore(sqlserver);      //执行还原操作
      MsgBox('数据库还原成功!',mbinformation,mb_ok);
    except
      MsgBox('数据库还原失败!,请重试或查阅帮助文档进行手动配置!',mbinformation,mb_ok);
    end;
end;
end;

//数据库的创建与还原事件写完了,但是它不会智能的知道什么时候去执行,所以我们要告诉它什么时候执行。下面是在程序安装完,在结束页面上建立了一个BUTTON按钮,当按下这个按钮时,会执行数据库的事件响应。
{---}
//创建一个button
procedure CreateButton(ALeft, ATop: Integer; ACaption: String; ANotifyEvent: TNotifyEvent);
begin
with TButton.Create(WizardForm) do begin //button对象的创建
    Left := ALeft;             //button的位置与宽高
    Top := ATop;
    Width := WizardForm.CancelButton.Width;
    Height := WizardForm.CancelButton.Height;
    Caption := ACaption;                            //button的名称
    OnClick := ANotifyEvent;
//这个是给创建的button指定一个父窗口,也就是说让它在哪个页面上边显示出来
    Parent := WizardForm.finishedPage; //这里指定的是窗体的结束页
end;
end;

//初始化向导窗口
procedure InitializeWizard();
var
Left, Top, TopInc: Integer;
begin
Left := WizardForm.WelcomeLabel2.Left;
TopInc := WizardForm.CancelButton.Height + 8;
Top := WizardForm.WelcomeLabel2.Top + WizardForm.WelcomeLabel2.Height - 4*TopInc;
//让上面创建的按钮显示出来,并且给它指定一个响应的事件
CreateButton(Left, Top, '&配置SQL数据库', @SQLDMOButtonOnClick);  
Top := Top + TopInc;
end;

时间: 2025-01-25 07:30:31

INNO SETUP数据库的连接与创建的相关文章

Inno Setup 创建站点,创建虚拟目录

原文 http://hi.baidu.com/0531_sunmiles/item/ce22554ab7d33d0be9350477 下面的这段代码是用Inno Setup 做安装包的时候创建IIS新的站点用的.因为是测试的,所以罗列了很多功能.虽然我现在用不到这么多,还是怕忘记了,做个备份.注释的部分也很宝贵啊. 本文同期发布在 论坛: http://www.jn18178.cn {---IIS部分---}constIISServerName = 'localhost'; IISServerN

使用Inno Setup 打包jdk、mysql、tomcat、webapp等为一个exe安装包(转)

之前一直都没涉及到打包安装方面的东西,都是另一个同事负责的,使用的工具(installshield)也比较高大上一点,可是后来他离职以后接受的同事也只能是在这个基础上做个简单的配置,然后打包,可是现在做的项目和原来的完全不一样以后就不能使用之前的了,只能是自己硬着头皮来弄个比较简单快捷的了. 切入正题,如标题所述使用inno setup来打包一个java web 相关的内容为一个exe,.net web类似,这个工具可以在网上直接找到下载,有汉化版的,并且里面也有帮助手册可以参考.把里面的一些敏

用Inno Setup制作WEB程序安装包

原文 用Inno Setup制作WEB程序安装包 最近做了一个WEB程序的安装包,我把制作的过程做个介绍,贴出源码给大家做个参考 看看inno 的脚本     [Setup] AppCopyright=test AppName=test AppVerName=test v2.0 SolidCompression=true OutputDir=Output\ OutputBaseFilename=test_setup DefaultDirName={pf}\Lms DefaultGroupName

Inno Setup 网页显示插件 webctrl

原文:Inno Setup 网页显示插件 webctrl ; -- Example.iss -- ; restools ; http://restools.hanzify.org ; 插件名:webctrl.dll ; 插件功能:网络连接检测,创建网页页面. ; 插件大小:9 KB ; V2 增强操作函数,可以同时创建多达 256 个 Web 窗口. ; V2 例子中演示了建立一个小型浏览器以体现该版本中的函数如何使用.比起 V1 重点在于能同时创建多个 Web 窗口. [Setup] AppN

一个比较完整的Inno Setup 安装脚本

原文:一个比较完整的Inno Setup 安装脚本 增加了对ini文件设置的功能,一个安装包常用的功能都具备了. [Setup]; 注: AppId的值为单独标识该应用程序.; 不要为其他安装程序使用相同的AppId值.; (生成新的GUID,点击 工具|在IDE中生成GUID.)AppId={{A9861883-31C5-4324-BD9A-DC3271EEB675};程序名AppName=ISsample;版本号AppVerName=ISsample 1.0.0.0;发布者名AppPubli

一个比较完整的Inno Setup 安装脚本(转)

一个比较完整的Inno Setup 安装脚本,增加了对ini文件设置的功能,一个安装包常用的功能都具备了. [plain] view plaincopy [Setup]   ; 注: AppId的值为单独标识该应用程序.   ; 不要为其他安装程序使用相同的AppId值.   ; (生成新的GUID,点击 工具|在IDE中生成GUID.)   AppId={{A9861883-31C5-4324-BD9A-DC3271EEB675}   ;程序名   AppName=ISsample   ;版本

Inno Setup GIF 显示插件 GIFCtrl (V2.1 版本)

原文 http://restools.hanzify.org/article.asp?id=79  引用来自 test.iss ; -- test.iss --; restools; http://restools.hanzify.org; gifctrl.dll 为一个用于 Inno Setup 的 13 KB 的 gif 显示插件,同样可以显示 BMP 和 JPEG. ; V2.1 可以同时显示 64 个 GIF 图片.解决插件加载后卸载时的延迟问题. [Setup]AppName=gifc

J2EE应用中与Oracle数据库的连接

j2ee|oracle|数据|数据库 在J2EE应用程序开发中,应用程序与数据库连接的建立是我们经常遇到的问题之一.在这里我主要谈谈在本地应用程序中通过OCI方式.thin方式和JdbcOdbc桥方式连接Oracle数据库,在iPlanet Application Server 6.5和Sun Java System Application Server 7中对Oracle数据库连接池的配置以及应用中如何从连接池中获得连接. 一.本地通过JDBC获得Oracle数据库连接 通过JDBC获得Ora

数据库的连接串(中文)

数据|数据库|中文 在数据库的各种应用程序开发中,连接数据库是数据库应用程序开发的第一步,同时也是最重要的一步.而对于不同的数据库他们的连接模式各有不同,对应的连接串也不同. Sql Server · ODBC o 标准连接(Standard Security): "Driver={SQL Server};Server=Aron1;Database=pubs;Uid=sa;Pwd=asdasd;" 1)当服务器为本地时Server可以使用(local); "Driver={S