如题,我在电脑上配置了tns文件,用plsql能连接上oracle,delphi7的控制台程序,如何连接oracle,最好有代码,另外怎么样屏蔽按回车键推出控制台?谢谢!!! 

解决方案 »

  1.   

    program Project1;{$APPTYPE CONSOLE}uses
      SysUtils,Windows,DB, ADODB,ActiveX;
    type
      TKeyShiftState = (kssRightAlt, kssLeftAlt, kssRightCtrl, kssLeftCtrl, kssShift, kssNumLock, kssScrollLock, kssCapsLock, kssEnhancedKey);type
      TKeyShiftSet = set of TKeyShiftState;type
      PKeyEventRecordFix = ^TKeyEventRecordFix;
      TKeyEventRecordFix = packed record
        bKeyDown: BOOL;
        wRepeatCount: Word;
        wVirtualKeyCode: Word;
        wVirtualScanCode: Word;
        KeyShiftState: TKeyShiftSet;
        case Integer of
        0:(
          UnicodeChar:   WCHAR;
          dwControlKeyState:   DWORD
        );
        1:(
          AsciiChar:   CHAR
        )
      end;var
    VirtualKeyCode: Word;
    VirtualScanCode: Word;
    adoConn: TADOConnection;
    adoDs: TADODataSet;
    function CheckKey(const VKCode: Word): Boolean;
    begin  
      result:= (VKCode<>VK_RETURN);
    end;  function ReadKey: Char;
    var
      NumRead: Cardinal;
      HConsoleInput: THandle;
      InputRec: TInputRecord;
    begin
      HConsoleInput:= GetStdHandle(STD_INPUT_HANDLE);
      repeat
        if WaitForSingleObject(HConsoleInput,INFINITE) <> WAIT_OBJECT_0   then
          raise   Exception.Create('Invalid handle for console input');
        if ReadConsoleInput(HConsoleInput,InputRec,1,NumRead) and (InputRec.EventType = KEY_EVENT) then
        begin
        with PKeyEventRecordFix(@InputRec.Event.KeyEvent)^ do
          if bKeyDown and CheckKey(wVirtualKeyCode) then
          begin
            VirtualScanCode:= wVirtualScanCode;
            VirtualKeyCode := wVirtualKeyCode;
            KeyShiftState  := TKeyShiftSet(LongRec(dwControlKeyState).Lo);
            Result:= AsciiChar;
            Exit;
          end;
        end;
      until False;
    end;begin
      CoInitialize(nil);
      adoConn:= TADOConnection.Create(nil);
      adoDs:= TADODataSet.Create(nil);
      adoConn.ConnectionString:='Provider=MSDAORA.1;Password=system;User ID=manager;Data Source=orcl;Persist Security Info=True';
      adoConn.LoginPrompt:= false;
      adoConn.Connected:= true;
      adoDs.Connection:= adoConn;
      adoDs.Close;
      adoDs.CommandText:='select * from tablename';
      adoDs.Open;
      while not adoDs.Eof do
      begin
        Writeln('...');
        adoDs.Next;
      end;
      Writeln('Press any key to Exit...');
      ReadKey;
      adoConn.Free;
      adoDs.Free;
    end.
      

  2.   

    其实连接操作数据库很简单,精华在那个ReadKey 函数BTW:我是来看月亮的
      

  3.   

    受月亮大哥的启发,用delphi写了一个控制台程序,从数据库A读取数据写到数据库B里面,每小时查询写入一次,该怎么写,我写的始终只执行一次,无法每小时执行一次;另外
    每次执行时清除控制台上次的执行信息(),
    比如执行第一次显示:
    第一次执行成功
    当第二次执行时清除控制台信息显示:
    第二次执行成功
    而不是:
    第一次执行成功
    第二次执行成功
    谢谢!!