如何制作数据库安装程序(过段时间看)

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脚本熟悉的人应该能看懂)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值