我作的这个产品现马上就要发布了,但还有一个问题我还没完全解决,详细说明如下:用户买了我的产品后,第一步是安装SQL Server数据库(这个倒没什么问题);
然后安装我的软件(此处耍判断是否已安装SQL Server,否则判断是否启动了服务),数据库文也放在我的软件件包里,安装完成后,运行我的程序,这个时间我要将数据库附加到SQL Server(附加时具体如何操作),然后连接到我的数据库;完事。求救:如何成功附加数据库(中间可能会有一些细节吧,那两句命令我是知道,但有时不能成功附加,也不知道什么原因),希望能来点优质的代码,谢谢!
万分感谢!
然后安装我的软件(此处耍判断是否已安装SQL Server,否则判断是否启动了服务),数据库文也放在我的软件件包里,安装完成后,运行我的程序,这个时间我要将数据库附加到SQL Server(附加时具体如何操作),然后连接到我的数据库;完事。求救:如何成功附加数据库(中间可能会有一些细节吧,那两句命令我是知道,但有时不能成功附加,也不知道什么原因),希望能来点优质的代码,谢谢!
万分感谢!
附加过程也是一样的,首先文件的路径要正确,因为附加数据库是要求绝对路径的。
保证SQL里没有这个数据库名称。
s1='Provider=SQLOLEDB.1;Integrated Security=SSPI;';
s2='Initial Catalog=master;Data Source=127.0.0.1;';
begin
form1.ADOConnection1.Close;
form1.ADOConnection1.ConnectionString:=s1+s2;
form1.ADOConnection1.Open;
try
with adoquery1 do
begin
close;
sql.Clear;
sql.Add(' exec sp_attach_db ''hgdata'','''+getcurrentdir()+'\hg.mdf'','''+getcurrentdir()+'\hglog.ldf'' ');
execsql;
end;
messagebox(form1.Handle,pchar('挂接数据库成功!'),'提示',mb_ok or mb_iconinformation);
except
application.Terminate;
end;
end;//有时不能附成功,可能是由于数据库中已存在了一同名的数据库,
function OnFirstUIAfter()
STRING szTitle, szMsg1, szMsg2, szOption1, szOption2;
NUMBER bOpt1, bOpt2,nDefOption;
string svSQLsvr,svSQLusr,svSQLpwd,szCmdLine,szWaitTxt;//quote SQL Database parameter
begin
///////////////////////////* quote the SQL Dababase *//////////////////////
/*Create SQL Database*/
SdShowDlgEdit3 ( "请填写数据库信息" , "请填写数据库信息", "数据库服务器名", "用户名" , "密码" ,svSQLsvr , svSQLusr , svSQLpwd );
szWaitTxt=" 正在创建所需数据库....";
SdShowMsg (szWaitTxt, TRUE);
Delay(3);
szCmdLine = "/U "+svSQLusr+" /P "+svSQLpwd+" /S "+svSQLsvr+" /Q \"exec sp_attach_db N'Xoffice' , N'"+TARGETDIR ^"data\\MP_Data.MDF', N'"+TARGETDIR ^"data\\MP_Log.LDF'\"";
if (LaunchAppAndWait("osql.exe", szCmdLine,WAIT) < 0) then
MessageBox ("数据库创建失败!请确您的系统中已安装 Microsoft SQL Server 2000.\n如仍无法解决,请联系系统供应商!",SEVERE);
endif;
SdShowMsg (szWaitTxt, FALSE);
//-------------------------------------
/*Test SQL Database*/
szWaitTxt=" 正在生成数据库服务器作业....";
SdShowMsg (szWaitTxt, TRUE);
Delay(3);
szCmdLine = "/U "+svSQLusr+" /P "+svSQLpwd+" /S "+svSQLsvr+" /Q \"use MP_Test; exec T_createjob\"";
if (LaunchAppAndWait("osql.exe", szCmdLine,WAIT) < 0) then
MessageBox ("生成数据库服务器作业失败!您可以在 sql查询分析器中执行 \n use Mp_Test; exec T_createjob \n完成!",SEVERE);
endif;
SdShowMsg (szWaitTxt, FALSE);