procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
sqlfile:textfile;
sqltext:string;
begin
AssignFile(sqlfile,bb.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);
end;
第一行:付近有语法错误。
在编译时老是出现这段文字,哪位知道问题出在哪
把这一改成
try
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(sqltext);
adoquery1.ExecSQL;
except
memo1.lines.assign(adoquery1.sql);
end;
在出错时,可以看一看这个时候运行的是什么内容?
然后再看看你的SQLFILE是否要修改
从sqlfile读取完后,把sqltext SHOW出来或则写到一个LISTBOX检查一下哪里有问题。
跟踪调试啊
呵呵
我给你的代码是看错误出现在哪里的
在出错了以后
看一看你的MEMO1的内容
就可以知道现在QUERY在哪个SQL语句中出错呀
不行的话
贴出出错时MEMO1的LINES来看看
//AssignFile(sqlfile,bb.sql);
//sqlfile:textfile;
---你的文件bb.sql的扩展名为.sql。 sqlfile又定义为textfile. 不对吧!
---不如把sql string存到bb.txt中。
很好办呀,你先用查询分析器执行你的BB.SQL里的所有语句,若没有错则可以的。
试下面代码看看.
procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
sqlfile:textfile;
sqltext:string;
begin
s := ;
sqltext:=s;
AssignFile(sqlfile,bb.sql);
Reset(sqlfile);
try
while not eof(sqlfile) do
begin
Readln(sqlfile,s);
sqltext:=sqltext + #13#10 + s;
end;
showMessage (sqltext);
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(sqltext);
adoquery1.ExecSQL;
application.MessageBox(数据库升级完成!,提示,MB_OK+MB_ICONINFORMATION);
finally
CloseFile(sqlfile);
end;
end;
如果你的MEMO1中有“一个乱码的字符”
强烈建议查看一下你的SQLFILE文件
中间可能输入了一些非法字符
而且这个非法字符在“GO”附近