制作后台数据库是SQL SERVER的安装程序时,怎么样能让安装程序自动注册数据库? 我用DELPHI6写了一个小东西,后台数据库是SQL SERVER2000,现在用installshield6.22做安装程序,想让安装程序附带上SQL SERVER的数据库文件,然后由安装程序自动注册附加数据库。请高手指点我该怎么做?一百分够不够?不够再加? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以用SQL语句实现,你可以写一个SQL文件然后执行它即可。 写一个SQL文件,在安装好软件后,由软件自己执行 ////////////////////////// // 创建和优化数据库 ////////////////////////// function CreateDataBase(svSQLsvr,svSQLusr,svSQLpwd) STRING szCmdLine,szWaitTxt; begin szWaitTxt=" 正在创建"+@PRODUCT_NAME+"所需数据库...."; SdShowMsg (szWaitTxt, TRUE); Delay(2); szCmdLine = "/U "+svSQLusr+" /P "+svSQLpwd+" /S "+svSQLsvr+" /Q \"exec sp_attach_db N'OASystem' , N'"+SUPPORTDIR ^"OASystem_data.mdf'\""; if (LaunchAppAndWait("osql.exe", szCmdLine,WAIT) < 0) then MessageBox ("数据库创建失败!请确您的系统中已安装 Microsoft SQL Server 2000.\n如仍无法解决,请联系系统供应商!",SEVERE); endif; SdShowMsg (szWaitTxt, FALSE); szWaitTxt=" 正在优化"+@PRODUCT_NAME+"系统数据库...."; SdShowMsg (szWaitTxt, TRUE); Delay(2); szCmdLine = "/U "+svSQLusr+" /P "+svSQLpwd+" /S "+svSQLsvr+" /Q \"use OASystem ; exec sp_updatestats\""; if (LaunchAppAndWait("osql.exe", szCmdLine,WAIT) < 0) then MessageBox ("数据库优化失败!您可以在 sql查询分析器中执行 \n use OASystem ; exec sp_updatestats \n完成!",SEVERE); endif; SdShowMsg (szWaitTxt, FALSE); return 0; end; 用一个ADOConnection连接到master数据库,执行存储过程sp_attach_db,将数据库附加上去procedure TFormSetupWizard.CreateDB;var CreateDBString: string;begin CreateDBString := 'sp_attach_db ' + #39 + 'dbName' + #39 + ',' + #39 + PathWithSlash(ExtractFilePath(Application.ExeName)) + 'dbName.mdf' + #39; try adcMaster.Execute(CreateDBString); except WarnBox('数据库设定错误' + #13#10 + CreateDBString); raise; end;end; PathWithSlash是我的一个自定义函数,确保路径以'\'结束; 你也可以用批处理执行SQL文件方法如下:新建一个批处理文件xxx.bat,内容为:isql -U sa -P -i ***.sql***.sql为你所写SQL文件,然后执行xxx.bat即可。 Unable to load CTLIB.DLL 请问Zlib有什么用?还有这么用? 我最近帮老师制作一套图书管理系统delphi+access制作 如何实现嵌入EXCEL、WORD并实现菜单融合 谁有Rxlib2.75 for delphi5吗? 在中间层的组件函数中的能不能用sleep 电子白板?有兴趣一起研究啊??? 存放证券行情数据的.dat文件是什么格式的文件?怎样才能看到文件中的内容? 在stringgrid中能否设置单元格或者单元列中字体的颜色? 有关button按钮 ****同样的两行代码,d7 and d5 结果不一样,奇怪 谁知道哪里有Base64的文档,分不够在加
// 创建和优化数据库
//////////////////////////
function CreateDataBase(svSQLsvr,svSQLusr,svSQLpwd)
STRING szCmdLine,szWaitTxt;
begin
szWaitTxt=" 正在创建"+@PRODUCT_NAME+"所需数据库....";
SdShowMsg (szWaitTxt, TRUE);
Delay(2);
szCmdLine = "/U "+svSQLusr+" /P "+svSQLpwd+" /S "+svSQLsvr+" /Q \"exec sp_attach_db N'OASystem' , N'"+SUPPORTDIR ^"OASystem_data.mdf'\"";
if (LaunchAppAndWait("osql.exe", szCmdLine,WAIT) < 0) then
MessageBox ("数据库创建失败!请确您的系统中已安装 Microsoft SQL Server 2000.\n如仍无法解决,请联系系统供应商!",SEVERE);
endif;
SdShowMsg (szWaitTxt, FALSE);
szWaitTxt=" 正在优化"+@PRODUCT_NAME+"系统数据库....";
SdShowMsg (szWaitTxt, TRUE);
Delay(2);
szCmdLine = "/U "+svSQLusr+" /P "+svSQLpwd+" /S "+svSQLsvr+" /Q \"use OASystem ; exec sp_updatestats\"";
if (LaunchAppAndWait("osql.exe", szCmdLine,WAIT) < 0) then
MessageBox ("数据库优化失败!您可以在 sql查询分析器中执行 \n use OASystem ; exec sp_updatestats \n完成!",SEVERE);
endif;
SdShowMsg (szWaitTxt, FALSE);
return 0;
end;
procedure TFormSetupWizard.CreateDB;
var
CreateDBString: string;
begin
CreateDBString := 'sp_attach_db ' + #39 + 'dbName' + #39 + ',' + #39 +
PathWithSlash(ExtractFilePath(Application.ExeName)) + 'dbName.mdf' + #39;
try
adcMaster.Execute(CreateDBString);
except
WarnBox('数据库设定错误' + #13#10 + CreateDBString);
raise;
end;
end;