Q&A

  • 다른 DB에서 다른 DB로 insert하는 방법좀 도와주세요
안녕하십니다..
델파이 초보 입니다..
다름이 아니라
델파이 프로그램에서
A라는 DB에서 AOD를 사용하여서 DBGrid에 보여지는것까지 했는데
그 DBGrid에 보여진 데이터를 B라는 DB에 insert시키고 싶은데
알려주세요~
DB는 MS SQL SERVER거든요.....
1  COMMENTS
  • Profile
    sallyslaw 2007.01.06 00:00

    마이그레이션 하는 작업이시면 DB 상에서 처리해도 될 문제지만...응용프로그램을
    통해서 처리하시려면...
    우선 생각나는 방법은 ADO 를 두개 사용하시는 방법이겠군요.
    DB Grid를 사용하지 않고 StringGrid를 사용하신다면..
    A 란 DB에서 읽어온 데이터를 StringGrid에 각 셀에 저장해놓고 활용하는 방법도 있겠구요. 그럼 ADO 1개면..

    어쨌든, 쉽게쉽게 ADO 2개 사용해서 각각의 A, B DB에 연결하고
    ADOQuery compo 각각 연결하시고

    각 쿼리 컴포 넴은

    qry_A     (A DB connect)
    qry_B     (B DB connect)

    이럼 준비는 되었고 예를 들어 A 디비의 AA 라는 테이블의 정보를 읽어 B 디비의 BB 란 테이블에
    저장하고자 한다면 (쉽게 AA 와 BB는 테이블 구조가 같다고 하겠습니다.)

    create table AA(
    A1 varchar(10),
    A2 varchar(20),
    A3 varchar(30));

    create table BB(
    B1 varchar(10),
    B2 varchar(20),
    B3 varchar(30));

    procedure TForm1.ButtonOnClick(Sender : TObject);
    var
      ssql : String;
      i : integer;
    begin
      ssql := 'SELECT * FROM AA';
      with qry_A do
      begin
        close;
        sql.clear;
        sql.text := ssql;
        open;
      end;
      // 위까지 쿼리까지 진행하면 DB Grid에는 이미 내용이 나와있게지요. 데이터가 있다면..
      // 이벤트를 따로 들수도 있겠지만..걍 여기서 같이 데이터도 옮긴다면..
      if not qry_A.IsEmpty then
      begin
        qry_A.First;
        for i := 1 to qry_A.RecordCount do
        begin
          ssql := 'INSERT INTO BB('
             + 'BB1, BB2, BB3) VALUES('
             + ''''  + qry_A.FieldByName('AA1').AsString + ''''
             + ',''' + qry_A.FieldByName('AA2').AsString + ''''
             + ',''' + qry_A.FieldByName('AA3').AsString + ''')';
          with qry_B do
          begin
            close;
            sql.clear;
            sql.text := ssql;
            ExecSQL;
          end;
          qry_A.Next;
        end;
      end;
    end;

    쩝 걍 쫌 허접하네. 그래도 이 방법이 나을 것 같습니다.
    즐코. 혹 다른 방법이 필요하신거라면~~리플