在企业管理器中,我把数据库导入为sql文件,我在delphi中用tadoQuery实现数据库的新建,新建数据库时用导出的sql文件,运行时却要报错?什么原因?
If opendialog1.Execute then
begin
  sqlfile:=opendialog1.FileName;//打开sql文件
  
 if dbconn.Connected then
   if fileexists(sqlfile) then
   begin
   query.sql.clear;
   query.SQL.add(sqlfile);
   query.ExecSQL;//根据sql语句建立数据库,表,用户等相关数据库对象
   end
  else
  Application.MessageBox('SQL文件不存在', '找不到!', MB_OK);
end;

解决方案 »

  1.   

    进行文件处理最少也要打开这个文件,然后在read到一个字符串中再加入到SQL语句中呀!难道直接给SQL中加入文件名就可以处理了吗???????????
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      SQLFile: TextFile;
      SQLString: String;
    begin
      if OpenDialog1.Execute do
      begin
        AssignFile(SQLFile,OpenDialog1.FileName);
        try
          Reset(SQLFiel);
          Read(SQLFile,SQLString);
        finally
          Close(SQLFile);
        end;
        with ADOQuery1 do
        begin
          Close;
          Prepared := False;
          SQL.Clear;
          SQL.Text := SQLString;
          Prepared := True;
          ExecSQL;
        end;
      end;
    end;
    ===================================
    大概应该是这个样子才可以的!我没有测试!不过应该没有问题!
      

  3.   

    错啦!
    上面应该是:
    ……
    if OpenDialog1.Execute then
    ……
    ================================
    一个幼稚的错误!
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      SQLFile: TextFile;
      SQLString: String;
    begin
      if OpenDialog1.Execute then
      begin
        AssignFile(SQLFile,OpenDialog1.FileName);
        try
          Reset(SQLFiel);
          Read(SQLFile,SQLString);
        finally
          Close(SQLFile);
        end;
        with ADOQuery1 do
        begin
          Close;
          Prepared := False;
          SQL.Clear;
          SQL.Text := SQLString;
          Prepared := True;
          ExecSQL;
        end;
      end;
    end;
      

  5.   

    你们说的对,但又存在一个问题,sql文件在查询分析器中运行都是正确的,但在程序中运行,就报语法错误,这中间还有什么问题吗?
      

  6.   

    To menggirl(看天上浮云,胜似闲庭信步) :
    兄弟够狠的!几乎一个字都不改!
    ……
        AssignFile(SQLFile,OpenDialog1.FileName);
        try
          Reset(SQLFiel);
          Read(SQLFile,SQLString);
        finally
          Close(SQLFile);
        end;
    ……
    这个明显就有错误!
    应该是:
    ……
        AssignFile(SQLFile,OpenDialog1.FileName);
        try
          Reset(SQLFile);
          Read(SQLFile,SQLString);
        finally
          CloseFile(SQLFile);
        end;
    ……
      

  7.   

    有些语句在查询分析器中是可以运行的,你可以看到有许多GO分隔,而在程序中是不能这么做的,而且有些语句不能与别的语句联合运行,比如创建存储过程、自定义函数等,你可以将sql文件装载后做一些基本的判断,比如按照GO来分隔成很多小的语句,然后单独运行这些小的语句。
      

  8.   

    试一试
    If opendialog1.Execute then
    begin
      sqlfile:=opendialog1.FileName;//打开sql文件
      
     if dbconn.Connected then
       if fileexists(sqlfile) then
       begin
       query.sql.clear;
       query.SQL.LoadFromFile(sqlfile);
       query.ExecSQL;//根据sql语句建立数据库,表,用户等相关数据库对象
       end
      else
      Application.MessageBox('SQL文件不存在', '找不到!', MB_OK);
    end;如果不成功,那么原因就是如hhzh426(春之风) 所说的。
      

  9.   

    “C:\Program Files\Microsoft SQL Server\MSSQL\Data\pm_Data.MDF”有错误?奇怪