设为首页
联系站长
加入收藏

您的位置: 首页>>IT业界>>互联网>>正文
 如何制作数据库安装程序
 日期:2005-12-4 15:08:51  来源:百当软件园
Dlg_SetupDatabase://安装数据库的界面
szMsg="请选择应用程序安装类型";
szTitle="应用程序安装类型";
SetupDatabase="服务器端";
noSetupDatabase="客户端";
svCheck1=TRUE;
svCheck2=FALSE;
nResult=AskOptions(EXCLUSIVE,szMsg,SetupDatabase,svCheck1,noSetupDatabase,svCheck2);
if nResult=BACK goto Dlg_SdRegisterUserEx;
if svCheck1=TRUE then
goto Dlg_SdShowDlgEdit3;
endif;
//modify by sds
//if svCheck2=TRUE goto Dlg_SdAskDestPath;
if svCheck2=TRUE goto Dlg_SdShowDlgEdit3;

Dlg_SdShowDlgEdit3:
szTitle="请输入数据库信息";
szMsg="请输入数据库信息";
ServerName="服务器名称";
UserName="用户名称";
Password="数据库口令";
svEdit1="";
svEdit2="sa";
svEdit3="";
nResult=SdShowDlgEdit3(szTitle,szMsg,ServerName,UserName,Password,svEdit1,svEdit2,svEdit3);
//这个地方要产生一个脚本文件CreateDatabase.Sql;

//if (nResult=BACK) goto Dlg_SetupDatabase;
if (nResult=BACK) then
goto Dlg_SetupDatabase;
else
WriteProfString (WINSYSDIR^"DbInfo.ini", "DatabaseInfo", "ServerName",svEdit1);
WriteProfString (WINSYSDIR^"DbInfo.ini", "DatabaseInfo", "UserName",svEdit2);
WriteProfString (WINSYSDIR^"DbInfo.ini", "DatabaseInfo", "PassWord",svEdit3);
if (svCheck2=TRUE) goto Dlg_SdAskDestPath;
if svCheck1=TRUE then

OpenFileMode(FILE_MODE_APPEND);
CreateFile(DataBaseHandle,WINSYSDIR,"CheckDataBaseInfo.Bat");
//dbCheck.Sql--应该是我们自己带的SRCDIR^
CheckDataBaseJbStr="@isqlw -S %s -d master -U %s -P %s -i "+SRCDIR^"dbCheck.sql -o "+WINSYSDIR^"out2.txt";
Sprintf(CheckDataBaseJbStr,CheckDataBaseJbStr,svEdit1,svEdit2,svEdit3);
WriteLine(DataBaseHandle,"@echo 正在检查数据库信息请稍等...");
WriteLine(DataBaseHandle,CheckDataBaseJbStr);
CloseFile(DataBaseHandle);
LaunchAppAndWait(WINSYSDIR^"CheckDataBaseInfo.Bat","",WAIT);
//写DBInfo文件让系统可以初始话BDE的配置

OpenFileMode(FILE_MODE_NORMAL);

OpenFile(OutHandle,WINSYSDIR,"out2.txt");
GetLine(OutHandle,OutStr);
if OutStr='1' then
MessageBox("该数据库存在,本次安装将不在安装数据库",WARNING);
CloseFile(OutHandle);
//DeleteFile(WINSYSDIR^"CheckDataBaseInfo.Bat");
//DeleteFile(WINSYSDIR^"out2.txt");
goto Dlg_SdAskDestPath;//不进行选择数据库的安装了
endif;

endif;
endif;
/*else
*/
//增加一个公司标示界面来插入数据---这个界面要负责产生InsertCompInfo.sql文件,让安装数据库的时候调用
Dlg_SdShowDlgEdit2:
szTitle="请输入公司信息";
szMsg="请输入公司信息";
CompName="公司名称";
CompInfo="系统标识";
nResult=SdShowDlgEdit2(szTitle,szMsg,CompName,CompInfo,CompNameStr,CompInfoStr);
if (nResult)=BACK then
goto Dlg_SdShowDlgEdit3;
else
OpenFileMode(FILE_MODE_APPEND);
CreateFile(CompHandle,WINSYSDIR,"InsertCompInfo.sql");
CompStr="insert into XTBZ(XTDM,XTMC) values("+"'" +"%s"+"'"+",'"+"%s"+"') ";
Sprintf(CompStr,CompStr,CompNameStr,CompInfoStr);
WriteLine(CompHandle,"use xs ");
WriteLine(CompHandle,CompStr);
WriteLine(CompHandle,"go");
CloseFile(CompHandle);
endif;
Dlg_DataBase: //选择安装数据库
szMsg="请选择数据库安装路径";
szTitle="数据库安装程序";
svDestDir="C:\\";
nResult=AskDestPath ("数据库文件路径", szMsg, svDestDir, 0);
//写文件

if (nResult=BACK) then
goto Dlg_SdShowDlgEdit2;
else
if GetDiskSpace(svDestDir)<10485760 then
MessageBox("磁盘空间太少了",WARNING);

goto Dlg_DataBase;
else
/*if (ExistsDir(svDestDir+"\\Data"))!=EXISTS then
CreateDir(svDestDir+"\\Data");
endif;*/
CreateDir(svDestDir+"\\Data");
//写批处理文件了创建数据库,svEdit1,是服务器名称svEdit2,是用户名称,svEdit3是数据库密码
//先要写创建数据库的脚本文件
OpenFileMode (FILE_MODE_APPEND);
CreateFile(DataBaseHandle,WINSYSDIR,"CreateDatabase.Sql");
// Sprintf
CDataBaseSql="CREATE DATABASE xs "+
" ON "+
"( NAME = xs_dat"+", "
+" FILENAME="+"'"+"%s"+"'"
+" )LOG ON (NAME=xs_log"+
",FileName="+"'"+"%s"+"'"
+")";
LogFileName=svDestDir+"Data\\"+"xs_log.ldf";
DataBaseFileName=svDestDir+"Data\\"+"xs_dat.mdf";
Sprintf(DataBaseMsg,CDataBaseSql,DataBaseFileName,LogFileName);

WriteLine(DataBaseHandle,DataBaseMsg);
CloseFile(DataBaseHandle);
OpenFileMode(FILE_MODE_APPEND);
CreateFile(DataBaseHandle,WINSYSDIR,"ExecuteSql.Bat");
//dbCheck.Sql--应该是我们自己带的SRCDIR^
CheckDataBaseJbStr="@isqlw -S %s -d master -U %s -P %s -i "+WINSYSDIR^"CreateDatabase.Sql -o "+WINSYSDIR^"out1.txt";
TableXsStr="@isqlw -S %s -d master -U %s -P %s -i "+SRCDIR^"Table_xs.Sql -o "+WINSYSDIR^"out1.txt";
CompStr="@isqlw -S %s -d master -U %s -P %s -i "+WINSYSDIR^"InsertCompInfo.sql -o "+WINSYSDIR^"out1.txt";
Sprintf(CheckDataBaseJbStr,CheckDataBaseJbStr,svEdit1,svEdit2,svEdit3);
Sprintf(TableXsStr,TableXsStr,svEdit1,svEdit2,svEdit3);
Sprintf(CompStr,CompStr,svEdit1,svEdit2,svEdit3);
WriteLine(DataBaseHandle,"@echo 正在创建数据库请稍等...");
WriteLine(DataBaseHandle,CheckDataBaseJbStr); //创建数据库
WriteLine(DataBaseHandle,"@echo 正在更新脚本语言请稍等...");
WriteLine(DataBaseHandle,TableXsStr);//写Table_xs的文件;
WriteLine(DataBaseHandle,"@echo 正在插入公司信息请稍等...");
WriteLine(DataBaseHandle,CompStr);//插入公司标示
CloseFile(DataBaseHandle);
LaunchAppAndWait(WINSYSDIR^"ExecuteSql.Bat","",WAIT);
DeleteFile(WINSYSDIR^"CreateDatabase.Sql");
DeleteFile(WINSYSDIR^"InsertCompInfo.sql");
DeleteFile(WINSYSDIR^"ExecuteSql.Bat");
DeleteFile(WINSYSDIR^"out1.txt");
MessageBox("恭喜数据库安装成功",INFORMATION);
endif;
endif;

上面的是通过脚本来完成的!(对InstallSheild脚本熟悉的人应该能看懂)

相关文章

·MySQL数据库安全配置
·化解字符串不能超过8000的方法
·sqlserver中怎么对text、ntext和
·sql server动态连接odbc的dsn
·ms sql server数据库无法输入简单
·Web环境下MS SQL Server中数据的
·优化SQLServer数据库服务器内存配
·将ACCESS的数据库转化为SQL SERV
·使用SQL Server 2000将现有代码作
·当SQL Server数据库崩溃时如何恢


阅读排行

·Win 2000不能访问Win XP的原因及
·解析Windows中的帐户和权限功能
·如何共享Windows XP操作系统
·Windows XP Service Pack 1
·通过 Windows XP 注册表自定义您
·Windows 2000 TCP/IP协议概述
·Windows 2000 Server TCP/IP协议
·dos常用命令使用说明
·Windows变慢原因分析及解决方法(
·Windows变慢原因分析及解决方法(
·WINXP下强行关闭“杀”不了的进程
·Windows XP系统注册表的恢复

最新文档

·创业激情需冷静 网络代理选择应理
·域名交易平台亟需规范 预防域名买
·Travel旅游域名即将引发抢注潮 
·从原理深处分析如何预防arp攻击
·突破建站弊端 企业网络营销大有可
·如何区分进程和病毒?
·java的基础知识,如何学好java
·微机原理与接口技术基础知识
·如何解决青少年沉迷网络的问题,
·全面分析主板BIOS报警信号

请您注意:
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·您在本站发表的作品,本站有权在网站内转载或引用
·其他网站如果需要转载 本站文章请在贵站著名来源,谢谢合作