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;
INNO SETUP数据库的连接与创建的更多相关文章
- 解决Inno Setup制作安装包无法创建桌面快捷方式的问题
转自:http://yedward.net/?id=104 昨天想把个java程序做成exe安装软件,然后就去下载了Inno Setup这个软件安装包制作软件,Inno Setup这个软件确实非常好用 ...
- PHP历程(PHP与MYSQL数据库之间连接、创建和关闭)
<?php define('WXLEVELS_DB_HOST','127.0.0.1'); //服务器 define('WXLEVELS_DB_USER','root'); //数据库用户名 d ...
- [Tool]Inno Setup创建软件安装程序。
这篇博客将介绍如何使用Inno Setup创建一个软件安装程序. Inno Setup官网:http://www.jrsoftware.org/isinfo.php. 可以下载到最新的Inno Set ...
- Inno Setup 创建站点,创建虚拟目录
原文 http://hi.baidu.com/0531_sunmiles/item/ce22554ab7d33d0be9350477 下面的这段代码是用Inno Setup 做安装包的时候创建IIS新 ...
- INNO SETUP脚本向导创建的基本脚本
脚本范例分析:先来看看一段用INNO SETUP脚本向导创建的基本脚本的[Setup]段: [Setup] AppName=Premiere 6.5 汉化补丁-----------------(程 ...
- Oracle18C安装后首次创建数据库并用sql developer 创建连接和用户
注意: SQL Developer 不能用于创建Oracle数据库,只能用来连接已经创建的数据库,数据库的建立要通过Database Configuration Assistant(DBCA)来完成. ...
- inno setup win10 创建菜单里面卸载图标
1.win10自己注册表关联的卸载图标 会隐藏 卸载图标.现在的项目法是 不写注册表 直接 在目标文件里面创建快捷方式 移动到菜单里面 ; 脚本由 Inno Setup 脚本向导 生成! ; 有关创建 ...
- Inno Setup怎样创建一个自动申请管理员身份运行的快捷
如果你使用的是 Unicode 版本的 Inno Setup,那么以下是更为专业的解决方法. 这是 mlaan 提及的再一种方法. QUOTE( CodeAutomation3.iss) ...
- jdbc创建数据库的连接
package com.gylhaut.db; import java.sql.Connection;import java.sql.DriverManager;import java.sql.Res ...
随机推荐
- 于XAML导入命名空间的代码
例如,下面的代码到指定的命名空间.不仅导入的命名空间,并且还为指定的命名空间前缀local.当然,你也可以指定一个前缀为另一个名称,这可以定义.导入后,市民可以在命名当前空间XAML使用代码.例如,在 ...
- 设计模式(Facade)状态(注意事项)
外观模式(Facade),子系统的一组接口提供一个一致的界面,该模式定义了一个高层次接口,这个接口使得这一子系统更加easy采用. 外观模式完美地体现了依赖反转原则,迪米特法则的想法,式之中的一个. ...
- [Elasticsearch] 部分匹配 (一) - 前缀查询
部分匹配(Partial Matching) 敏锐的读者可能已经发现到眼下为止,介绍的查询都是在整个词条层面进行操作的. 匹配的最小单元必须是一个词条.你仅仅能找到存在于倒排索引(Inverted I ...
- sql语句like的使用方法
在SQL结构化查询语言中,LIKE语句有着至关关键的数据. LIKE语句的语法格式是:select * from 表名 where 字段名 like 相应值(子串),它主要是针对字符型字段的,它的作用 ...
- HTC T328W刷机包 仿三星S5 UI美化 精简 S5落下
ROM介绍 1.三星移植TouchWiz接口; 2.三星增加S4壁纸和图标美化; 3.正确ROM呈流线型; 4.正确ROM优化; 5.完成ROOT权限; 6.短信支持来信息亮屏功能(在短信设置里设置) ...
- ODP.NET 之访问 Oracle 数据库
ODP.NET 之访问 Oracle 数据库 要相使用 Oracle Data Provider For .NET(ODP.NET), 必须先安装 ODP.NET 或者是 ODAC(Oracle Da ...
- ext panel 它们的定义图像刷新
从管理发展的近期回报.事实上,它采取了一些努力,以适应,应对来自另一个角度的问题只.外观似良好的效果.阿土,项目用到了EXT js.百度大神里面没找到一个合适的图片组件.自己写了个能够刷新的图片组件. ...
- SQL Prompt——SQL智能提示插件
数据库是大家在项目开发中肯定会用到的,C#项目用的最多的就是微软自家的SQL Server了.不可否认,微软的Visual Studio开发平台很好用,很直观的体现就是智能提示.敲几个字符,相关的信息 ...
- Android dumpsys命令的使用
Android提供的dumpsys工具能够用于查看手机中的应用程序和系统服务信息与状态,手机连接电脑后能够直接命令行运行adb shell dumpsys 查看全部支持的Service可是这样输出的太 ...
- HDOJ 5017 Ellipsoid
第一次尝试模拟退火..... Ellipsoid Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java ...