1. 需要有TADOConnection 和TADOQuery这两个控件;
2. ADOQuery1 的Connection属性设置为:ADOConnection1;
3. 读配置文件,得到数据库

procedure TFrmMain.ReadInifile;
var
  IniFile: TIniFile;
begin
  IniFile :
= TIniFile.Create(ExtractFilepath(Application.exename) + 'aninifile.ini');
  try
    FServerName :
= IniFile.ReadString('db', 'server', '');
    FParamDBName := IniFile.ReadString('db', 'paramdb', '数据库名称');
    if (FServerName = '') or (FParamDBName = '') then
    begin
      MessageBox(Application.Handle, PChar(
'读取配置文件aninifile.ini 中服务器出错,请修复!

'), PChar('我的应用程序'), MB_ICONSTOP);
    end;
  finally
    IniFile.Free;
  
end;
end;



4.打开数据库

function TFrmMain.OpenParamDB: Boolean;
begin
  
with ADOConnection1 do
  begin
    try
      
if not Connected then
      begin
        ConnectionString :
= 'Provider=SQLOLEDB.1;Persist Security Info=False;User 

ID
=sa;Initial Catalog=' + FParamDBName + ';Data Source=' + FServerName;
        Connected        := true;
      
end;
      result :
= true;
    except
      MessageBox(Application.Handle, PChar(
'无法连接计算机“' + FServerName + '”上的“' + 

FParamDBName 
+ '”,请检查数据库是否已安装并启动!'), PChar('我的应用程序'), 

MB_ICONWARNING);
      result :
= false;
    
end;
  
end;
end;



5.写SQL语句,读出数据

function TRdb.RefreshShowInfo(const ADeviceId, AInDeviceId: integer): TDcapTt;
var
  strSQL: 
string;
  Device: TDcapDevice;
  Tt: TDcapTt;
begin
  strSQL :
= ' SELECT 表1.名称,  表2. * ,表3.备注 '+
            ' FROM 表1 INNER JOIN 表2 ON ( 表1.ID = 表2.ID) '+
            ' INNER JOIN 表3 ON  (表1. ID = 表3.ID) '+
            ' WHERE (1.ID = '+ IntToStr(AId) + ')';
  try
    
with FrmMain.ADOQuery1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add(strSQL);
      Open;
      First;
      
while not Eof do
      begin
        Device :
= TDcapDevice.Create(FrmMain.ADOQuery1);
        
Next;
      
end;
      Close;
    
end;
  except
  
end;
end;

constructor TDcapDevice.Create(Query: TADOQuery);
var
  ARemark: 
string;
begin
  try
    FId :
= Query.FieldByName('ID').AsInteger;
    FName := Trim(Query.FieldByName('名称').AsString);
    FName1 := Trim(Query.FieldByName('名1').AsString);
    ARemark := Trim(Query.FieldByName('备注').AsString);
    if ARemark = 'tttt' then
      FType := dtGRS
    
else
      FType :
= dtNormal;
  except
  
end;
end;



6.关闭打开的数据库

procedure TFrmMain.CloseParamDB;
begin
  ADOConnection1.Close;
end;



7.显示读出来的数据

procedure TFrmMain.RefreshTtList;
var
  i: 
integer;
  NewItem: TListItem;
  mytt: TDcapTt;
  mydevice: TDcapDevice;
begin
  
if not NotListStrap then
    begin
      
if ListView1 = nil then
        CreateListView;

    
with ListView1.Items do
    begin
      BeginUpdate;
      Clear;
      
for i:=0 to FTts.Count-1 do
      begin
        NewItem :
= Add;
        mytt :
= TDcapTt(FTts[i]);
        mydevice :
= mytt.Device;
        
case mytt.Status of
        TT_STATUS_CLOSE:
        begin
          NewItem.Caption :
= FState1Text;
          NewItem.ImageIndex:
=0;
        
end;
        TT_STATUS_OPEN:
        begin
          NewItem.Caption :
= FState2Text;
          NewItem.ImageIndex:
=1;
        
end;
        TT_STATUS_UNKNOWN:
        begin
          NewItem.Caption :
= '不确定';
          NewItem.ImageIndex:=2;
        
end;
        
end;
        NewItem.SubItems.Add(mydevice.StationName);
        NewItem.SubItems.Add(IntToStr(mydevice.Id));
        NewItem.SubItems.Add(IntToStr(mytt.InDeviceId));
        NewItem.SubItems.Add(mytt.Name);
      
end;
      EndUpdate;
    
end;
  
end;
end;
posted on 2007-03-26 08:48  左左右右  阅读(597)  评论(1编辑  收藏  举报