Q&A

  • TADOQuery 이용시 Transaction 처리 방법은?
TADOquery를 이용하여 PROGRAM을 짜고 있는데.

TADOquery를 이용하다보니 Transaction을 처리하는 방법을 모르겠네요.

TADOquery 자체에 Connectionstring 에서 Database를 선택하여 사용 하고요..

소스는:

TADOquery.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +

'Data Source=' + ExtractFilePath(ParamStr(0)) +

'Address2.mdb;Persist Security Info=False';



TADOquery.SQL.Clear;

TADOquery.SQL.add ('Update office ');

TADOquery.SQL.add ('Set office = :N1, ');

TADOquery.SQL.add ('N_ame = :N2, ');

TADOquery.SQL.add ('tel = :N3, ');

TADOquery.SQL.add ('office_tel = :N4, ');

TADOquery.SQL.add ('hp = :N5, ');

TADOquery.SQL.add ('pp = :N6, ');

TADOquery.SQL.add ('address = :N7 ');

TADOquery.SQL.add ('Where n_ame = :N8 ');

TADOquery.Parameters.ParamValues['N1'] := Trim(edit1.text);

TADOquery.Parameters.ParamValues['N2'] := Trim(edit2.text);

TADOquery.Parameters.ParamValues['N3'] := Trim(edit3.text);

TADOquery.Parameters.ParamValues['N4'] := Trim(edit4.text);

TADOquery.Parameters.ParamValues['N5'] := Trim(edit5.text);

TADOquery.Parameters.ParamValues['N6'] := Trim(edit6.text);

TADOquery.Parameters.ParamValues['N7'] := Trim(edit7.text);

TADOquery.Parameters.ParamValues['N8'] := Trim(combo.text);

TADOquery.ExecSQL;

TADOquery.close;



동작에는 이상이 없습니다.



하지만 이게 맞는 방법인지는 모르겠군요..

개인적인 생각으로 Tdatabase 와 Tquery가 같이 사용 되어야 할것 같은데..

이 두 컨트롤을 어떻게 연결 하는지요..

방법이 틀리다면 어느 부분이 틀렸는지 말씀해 주세요..



델파이 입문 xx일 완전초짜..



PS:

VB에서는 Database 와 Recordset을 정의하여

Database 에서 DB를 연결하고 Transaction 처리를 하는데



주로 Recordset은 Table을 Select하고요..

Database.BeginTrans

Database.Execute Recordset, Database

Database.CommitTrans

//Database.Rollback



이런식의 처리는 어찌 하나요..?

1  COMMENTS
  • Profile
    최석기 2000.09.07 10:43
    안녕하세요.

    델파이세상(http://www.freechal.com/delphiworld)에 최석기입니다..



    ADO를 사용해서 트랜잭션 처리를 하기 위해서는 TAdoConnection을 사용하시면 됩니다..



    TAdoQuery에 Connection 프로퍼티를 AdoConnection으로 설정하시고 AdoConnection에 아래 코딩으로 해놓으신(ConnectionString) 셋팅을 해주세요..



    그리고 트랜잭션 처리는 다음과 같이..



    try

    AdoConnection1.BeginTrans;

    AdoQuery1.Close;

    AdoQuery1.SQL.Text := 'INSERT INTO Test VALUES(......)';

    AdoQuery1.ExecSQL;

    AdoConnection.CommitTrans;

    except

    AdoConnection.RollBackTrans;

    end;



    초보 wrote:

    > TADOquery를 이용하여 PROGRAM을 짜고 있는데.

    > TADOquery를 이용하다보니 Transaction을 처리하는 방법을 모르겠네요.

    > TADOquery 자체에 Connectionstring 에서 Database를 선택하여 사용 하고요..

    > 소스는:

    > TADOquery.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +

    > 'Data Source=' + ExtractFilePath(ParamStr(0)) +

    > 'Address2.mdb;Persist Security Info=False';

    >

    > TADOquery.SQL.Clear;

    > TADOquery.SQL.add ('Update office ');

    > TADOquery.SQL.add ('Set office = :N1, ');

    > TADOquery.SQL.add ('N_ame = :N2, ');

    > TADOquery.SQL.add ('tel = :N3, ');

    > TADOquery.SQL.add ('office_tel = :N4, ');

    > TADOquery.SQL.add ('hp = :N5, ');

    > TADOquery.SQL.add ('pp = :N6, ');

    > TADOquery.SQL.add ('address = :N7 ');

    > TADOquery.SQL.add ('Where n_ame = :N8 ');

    > TADOquery.Parameters.ParamValues['N1'] := Trim(edit1.text);

    > TADOquery.Parameters.ParamValues['N2'] := Trim(edit2.text);

    > TADOquery.Parameters.ParamValues['N3'] := Trim(edit3.text);

    > TADOquery.Parameters.ParamValues['N4'] := Trim(edit4.text);

    > TADOquery.Parameters.ParamValues['N5'] := Trim(edit5.text);

    > TADOquery.Parameters.ParamValues['N6'] := Trim(edit6.text);

    > TADOquery.Parameters.ParamValues['N7'] := Trim(edit7.text);

    > TADOquery.Parameters.ParamValues['N8'] := Trim(combo.text);

    > TADOquery.ExecSQL;

    > TADOquery.close;

    >

    > 동작에는 이상이 없습니다.

    >

    > 하지만 이게 맞는 방법인지는 모르겠군요..

    > 개인적인 생각으로 Tdatabase 와 Tquery가 같이 사용 되어야 할것 같은데..

    > 이 두 컨트롤을 어떻게 연결 하는지요..

    > 방법이 틀리다면 어느 부분이 틀렸는지 말씀해 주세요..

    >

    > 델파이 입문 xx일 완전초짜..

    >

    > PS:

    > VB에서는 Database 와 Recordset을 정의하여

    > Database 에서 DB를 연결하고 Transaction 처리를 하는데

    >

    > 주로 Recordset은 Table을 Select하고요..

    > Database.BeginTrans

    > Database.Execute Recordset, Database

    > Database.CommitTrans

    > //Database.Rollback

    >

    > 이런식의 처리는 어찌 하나요..?