关于osql与shellexecute及批处理执行文的奇怪的问题...

ace0206 2003-08-18 08:25:18
我在delphi中用
ShellExecute(0, 'open',PChar(a.bat'), nil, nil,SW_HIDE);批处理文件a.bat来访问msde,进行操作,
a.bat的内容如下:
osql -U sa -P sa -S srv\gx -i F:\hyhg\b.sql
b.sql的内容如下
sp_attach_db @dbname=N'db1',@filename1=N'F:\gx\gx_data.mdf',@filename2=N'F:\gx\gx_log.ldf'
go
@dbname=N'db1',@filename1=N'F:\gx\demo_data.mdf',@filename2=N'F:\gx\demo_log.ldf
go
发现命令无法完成,但奇怪的是在delphi的调试状态下或者用鼠标双击这个批处理文件a.bat却都可以正常执行,我认为这是delphi内的运行问题,却不知道出在哪里,请高手指点,谢谢!
...全文
49 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ace0206 2003-08-18
  • 打赏
  • 举报
回复
大力:你好!
我是用ODBC通过BDE来连接MSDE的,另外上面那段代码我是写在安装程序中的,那时候我的程序还没有连上数据库,你能帮我查查看上面的错误是什么原因吗,或者有没有其它的办法?非常谢谢!!
pengdali 2003-08-18
  • 打赏
  • 举报
回复
AssignFile(sqlfile, 'update.sql');
Reset(sqlfile);
while not eof(sqlfile) do
begin
Readln(sqlfile, s);
sqltext:=s;
while (not eof(sqlfile)) and (uppercase(trim(s))<>'GO') do
begin
Readln(sqlfile, s);
if (uppercase(trim(s))<>'GO') then
sqltext:=sqltext+' '+s;
end;
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(sqltext);
adoquery1.ExecSQL;
end;
CloseFile(sqlfile);

application.MessageBox('数据库升级完成!','提示',MB_OK+MB_ICONINFORMATION);

//注:上述代码要求update.sql文件中语句无注释

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧