Q&A

  • DB-connection 계속 유지시키는 방법좀 갈켜주세요..T^T
예전에도 질문했었는데... 리플이 없어서 다시금 올립니다...(관리자님 지송)
고수님들의 도움 좀 부탁드립니다.... T^T

DB를 약간 약하게 사용하는 프로그램을 짜고 있습니다...
거의 단순 select, update, insert 사용하는, DB 의 내용을 읽는 비율이 다른 프로그램보다 약한 그런 프로그램요... 근데 문제는 사용자의 손을 거의 타지 않는 즉 서비스로도 변경 가능 해야 한다는 겁니다.
DB 의 경우 MSCS 로 묶여져서 session이 끊어질 가능성이 언제나 있어서 session이 끊어지면 다시 맺어야 합니다.
제가 해본 것들은 아래와 같고, Connection object를 가지고 해보았는 데, 모두 이상한 듯 하니...쩝... 좋은 방법 알고 계시는 분들.. 좀.. 도와주십시오...
ㅡㅡㅋㆀ

환경 :  DB서버-Oracle 8i / Delphi 6 / RTL patch까지 모두 마침..

1. ADO :
TADOConnection의 경우 connected = true 가 되고 난 다음에는 전혀 반응이 없습니다.
가령 네트웍이 연결된 상태에서 connected := true 시켜놓고 네트웍을 끊고 난 다음 connected := false; / connected := true; 이렇게 해도 전혀 exception을 발생시키지 않습니다.
따라서 connected = true 상태에서 TADODataSet 등을 이용해서 작업하다가 db-session 이 끊어진 것을 알았을 때, connected := false; / connected := true 로 해놓고 작업해도 전혀 반응 없습니다.  
TADOConnection 을 새로 만들어서 사용하는 방법을 이용해 보았으나 네트웍 케이블을 뽑아서 실험해 보니... 새로 connection 을 맺는 것이 딱 2번만 성공하고 3번째는 전혀 반응하지 않더군요... 성공했으면 계속 성공하고 아님 처음부터 성공하지 말아야 할 텐데.. 어떤 경우인지 전혀... 이해가 안됨...
ADO의 경우 target이 Win2000 이상이면 따로 배포할 필요도 없이 프로그램 파일만 배포하면 되니까 제가 제일 선호하는 쪽인데.. 전혀.. 도움이 안되는 군요..

2. dbExpress :
TSQLConnection의 경우 단지 connected := false / connected := true 의 형식만으로 connection 가능 여부를 exception 을 통해서 알 수 있었읍니다.
그러나... 오라클의 경우... Database만 정확하면 사용자/암호를 전혀 신경 쓰지 않고(암 거나 넣어도 접속됩니다.), connected := true 시에 except 걸고 검사하는 코드를 계속 돌리면... 메모리가 장난 아니게 늘어납니다.
Process viewer 로 본 결과... 걍 메모리만 늘어나면 어찌 쓰겠는 데... Heap이 거의 50~100K 씩 늘어나는 군요...
dbExperss 역시도 그냥 해당 dll 만 같이 배포하면 되서 좋은 데.. 이 메모리 문제 땜시 전혀 사용 못하고 있는 실정입니다.

3. bde :
TDatabase 역시 connected := false; / connected := true; 로 db-connection 검사 및 새로 맺어 주는 게 가능하더군요..
하지만 역시나 메모리 문제는 있는 듯 합니다...
증가가 없을 때는 없는 데.. 증가분이 있는 경우는 10~20K 씩 힙이 늘어나는 군요...
bde의 경우 볼랜드에서도 권고 사항이 아니구... 배포문제도 있고.. 해서 가장 마지막 선택인데... 개인적으로는 bde 쓰기 싫거든요... ㅡㅡㆀ
0  COMMENTS
    • 이정한
    • 2002.08.17 22:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 황준동
      2002.08.18 00:09
      0 : frmSmon.Edit1.Text := frmSmon.Edit1.Text +IntToHex(rxBuf[rxcnt],2) + ' ';   1 : frmS...
    • 델델델
    • 2002.08.17 21:34
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 황준동
      2002.08.18 00:15
      파일 처리와 파일 스트림의 차이를 굳이 말씀드리자면, 스트림 글자 차이겠지요. 같이 파일을 처리하는 ...
    • 이희성
    • 2002.08.17 21:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 오병주
      2002.08.17 21:33
      냉무라고 했는데 보는사람은 뭐지..  ㅡㅡ^ 쩝.....
    • 황준동
      2002.08.18 00:34
      DBGrid1.DefaultDrawing := False; OnDrawColumnCell 이벤트에서 그려 주시면 됩니다. 예를 들면 ...
    • 강미경
    • 2002.08.17 20:00
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 문재욱
      2002.08.17 20:47
      원하는 답변이 맞는지 모르겠네요.. 메모컴포넌트에 읽어들였다면 커서가 메모 텍스트의 끝부분에서 커...
    • 심청이
    • 2002.08.17 19:15
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 황준동
      2002.08.18 00:36
      어떤 프로그램이고, 어떻게 코딩되어 있는지는 잘 모르겠지만. 제 생각으로는 델파이를 새로 깔고 패치를 ...
    • 심청이
      2002.08.18 02:58
      관심 감사드립니다. 이제야 방향을 잡은 것 같습니다. 프로그램에서 자체적으로 제작한 DLL을 호출하...
    • 나옹이
    • 2002.08.17 19:01
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 김용구
      2002.08.18 01:05
      TQuery  컴포넌트를 사용해서 불러 온거면 RequestLive := True 로 설정 해주시고요 DBGrid ...
    • 나옹이
      2002.08.18 02:08
      table로 할때는 다른가요?
    • 맑은물
      2002.08.18 07:28
      table 로 하시면 기본 디폴트 값으로도 수정이 되던데요. 일단 테스트로 table 컴포넌트를 배치하고 네비...
    • 나옹이
      2002.08.19 06:58
      냅...그건 알고 있는데요.... table1.tabelname:='aaa'; 라고 지정하면.... 걍 데이터가 나오면서......
    • 황준동
      2002.08.18 00:46
      화면은 보통 72DIP 정도 됩니다. 하지만 프린터 같은 경우엔 600DIP이니 뭐니해서 상당히 크죠. 따라서 화...
    • 나옹이
    • 2002.08.17 07:00
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 나옹이
      2002.08.17 07:13
      제가 브레이크 포인트로 잡아서 보니깐... 공백을 받으면.... 에러가 나는거 같아요........ 빈 필드...
    • 나옹이
      2002.08.17 07:56
        while Not EOF do begin         j := 1;  &...
    • 김요한
    • 2002.08.17 05:35
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2002.08.17 18:33
      안녕하세요. 최용일입니다. 하나의 파일만 있든 여러개의 파일들이 있든 한번에 하나씩만 전송합니다. ...
    • 이정택
    • 2002.08.17 04:30
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 하늘벌레
      2002.08.21 00:38
      질문내용으로 보아 마스터/디테일로 구현하시는것도 좋을듯하네요 일일이 쿼리 안던져도 되니까요 ^^;
    • 이창환
      2002.08.17 05:39
      DBGrid.DataSource.DataSet.RecordCount를 이용하거나.. 자료건수가 0인것을 체크하는 거라면 RecordCount...
    • 갈매기
      2002.08.17 05:04
      query1.recordcount = 0 then showmessage('데이타가 없습니다'); 이렇게 하면 안될까요? 허접 초...
    • 나옹이
    • 2002.08.17 04:04
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 양용성
      2002.08.17 13:09
      보아하니 오라클 같은데 먼저 SYS.ALL_TAB_COLUMNS - 테이블에서 정보를 가져옵니다. SYS.ALL_CONSTRAI...
    • 나옹이
      2002.08.17 17:09
      냅...... 전체 스키마를 만들어주는 구문은 없었군요... 테이블 정보를 보고서 조합해서 만들어야 한...
    • 동규재
    • 2002.08.17 03:32
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이현철
      2002.08.21 18:36
      우선 windows 프로그램에서 Unix 상의 Command 를 실행시킬수 있는 방법은 두가지 정도로 나누어집니다. ...
    • 황원규
    • 2002.08.17 03:11
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 김헌대
      2002.08.17 22:08
      이렇게 사용하면 어때여.. 이 procedure는 입력문자나 숫자을 에디터 창에서 정렬시켜주는 겁니다. 델파...
    • 갈매기
      2002.08.17 05:08
      숫자만 입력하신다면 numEdit를 사용하시는게 어떨지요~~
    • 황원규
      2002.08.17 17:49
      답변 감사합니다. 근데,  numEdit에 대해서 잘 모르겠네요. 첨 보는 거라, Help를 찾아봐도 ...
    • ^ㅡ^
      2002.08.17 18:51
      //numEdit란 하나의 컴포넌트입니다. 델파이에서 제공해주는것이 아니고 사용자가 만든 컴퍼런트입니...
    • 황준동
      2002.08.18 00:38
      Delphi 강의실에 맨 앞쪽에 보면 이것에 대한 강좌가 있습니다. 그걸 참조하시면 될것 같네요.
    • 2002.08.17 02:49
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 고지범
    • 2002.08.17 02:20
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 이창환
      2002.08.17 05:29
      설정 : Edit의 Name속성을 Edit0 ~ Edit30이라고 가정한 후 var     TmpComp : TC...
    • 고지범
      2002.08.17 02:03
      일단 폼위에 작업을 편하게 하기 위해서 TEdit 가 순서대로 있다고 가정 하겠습니다. 테스트를 편하게 하...
    • 김요한
      2002.08.18 01:04
      제가 질문하고 제가 답을 하네요. 혹시 여러분들 중에서 메일에 대한 테스트를 하실때는 hotmail과 같...