各位大侠:
  我在写一个小程序,我用:
procedure TDataModule2.DataModuleCreate(Sender: TObject);
var ini:TiniFile;
    srvName:string;
    constr:string;
    tempstr:string;
begin
try
 ini:=TiniFile.Create(ExtractFileDir(Application.ExeName)+'/server.ini');  srvName:=ini.ReadString('comserver','name','yoyo');
  ini.Free;
   DataModule2.ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Password=;Persist Security Info=True;User ID=sa;Initial Catalog=data;Data Source='+srvname+'; Network library=dbmssocn';  DataModule2.ADOConnection1.Connected:=true;
 except
   ON E:exception DO
     begin
       showmessage('系统连接服务器失败、请检查网络配置!');
       dl.Close;
     end
   end;
end;
程序片段,在打开程序时,我用上面的程序片段,联系数据库,请问:
如果我在程序中执行insert 语句 时,数据库突然关闭或中断了,我该如果判断数据库是否正常,然后执行语句
如果数据库不正常如何办?谢谢,本人是一名菜级人士,请赐相关语句

解决方案 »

  1.   

    在进行insert,update和delete操作时,应该引入事务机制,只要数据库出现问题,就全部回滚,只有操作完成才提交。
    adoconnection中有方法begintrans,committrans和rollbacktrans,如果不理解的话可以看看数据库方面的书。
      

  2.   

    对头,你用事务处理不用完了
    adoconnection.begintrans;
    try
    ///....你的语句
    adoconnecton.committrans;
    except
    adoconnecton.rollbacktrans;
    end;
      

  3.   

    用事务处理处理一般异常可以
    对于连接中断只能靠异常来处理了,
    如:
    conn.begintrans;
    try
      conn.committrans;
    except
      try
        conn.rollbacktrans;
      except
        showmessage('连接异常!');
      end;
    end;
      

  4.   

    嗯,hsmserver的解答更全面一些