Q&A

  • 고수님들 도와주세요. (insert 수행시...)


ADODataSet1.CommandText := 'insert into 테이블이름 (이름) values '+'('+''''+name+''''+')';

ADODataSet1.Active := True;



이렇게 insert를 하고자 하는데..자꾸만 에러나 나네요.........

무엇이 문제인지...(실제로 테이블에는 여러개의 필드가 있지만 한개의 필드에만

값을 insert 할려고 하는데..)



고수님들의 조언 부탁합니다..

2  COMMENTS
  • Profile
    도움받은이 2000.02.08 07:27
    어떤 에러 메시지가 났는지 명시하여 다시 올려 주시면

    좀더 자세한 답변을 받을 수 있을텐데...



    이 질문만으로는 ...



    죄송함다...





    초짜 wrote:

    >

    > ADODataSet1.CommandText := 'insert into 테이블이름 (이름) values '+'('+''''+name+''''+')';

    > ADODataSet1.Active := True;

    >

    > 이렇게 insert를 하고자 하는데..자꾸만 에러나 나네요.........

    > 무엇이 문제인지...(실제로 테이블에는 여러개의 필드가 있지만 한개의 필드에만

    > 값을 insert 할려고 하는데..)

    >

    > 고수님들의 조언 부탁합니다..

  • Profile
    김진호 2000.02.08 21:04
    도움받은이 wrote:

    > 어떤 에러 메시지가 났는지 명시하여 다시 올려 주시면

    > 좀더 자세한 답변을 받을 수 있을텐데...

    >

    > 이 질문만으로는 ...

    >

    > 죄송함다...

    >

    >

    > 초짜 wrote:

    > >

    > > ADODataSet1.CommandText := 'insert into 테이블이름 (이름) values '+'('+''''+name+''''+')';

    > > ADODataSet1.Active := True;

    > >

    > > 이렇게 insert를 하고자 하는데..자꾸만 에러나 나네요.........

    > > 무엇이 문제인지...(실제로 테이블에는 여러개의 필드가 있지만 한개의 필드에만

    > > 값을 insert 할려고 하는데..)

    > >

    > > 고수님들의 조언 부탁합니다..



    ADODataSet1.CommandText := 'insert into 테이블이름 (이름) values '+'('+''''+name+''''+')';

    ADODataSet1.Active := True;



    질문에 대한 답변은 하자면...

    ADODataSet은 일종에 대이타를 가져오기 위한 컴포넌트 입니다..

    즉..ADODataSet는 'SELECT' 에 적합 하다는 이야기 입니다..

    참고로 ADODataSet1.Active := True; 라는 형태의 코딩은

    'SELECT'에 특정 결과를 가져오는 때에 사용 합니다..



    좀더 말씀 드리자면 위 코딩은 ADOQuery가 적합 합니다..

    ADOQuery1.CommandText := 'insert into 테이블이름 (이름) values '+'('+''''+name+''''+')';

    ADOQuery1.ExecSQL;



    이라는 코딩이 적당 하리라 봅니다..



    한가지더...

    ADOQuery1.SQL.Clear;

    ADOQuery1.SQL.ADD(''insert into 테이블이름 (이름) values ( :name ) ');



    ADOQuery1.Parameters.ParamByName('name').Value := Edit1.Text;

    ADOQuery1.ExecSQL;

    if ADOQuery1.RowsAffected > 0 then showmessage('처리 됐습니당..');



    만일 ADOQuery1 가 'SELECT'였다면

    ADOQuery1.Active := True가 맞지만,, insert, update, Delete 라면 당연히

    ADOQuery1.ExecSQL 입니다..

    ADOQuery1를 수행후 ADOQuery1.RowsAffected 하면 몇개가 수행 됐는지에 대한

    결과를 반환 합니다..



    글구

    'insert into 테이블이름 (이름) values '+'('+''''+name+''''+')';

    방식은 정말 위험할수 있습니다..

    예를 들면 사용자가

    name := Edit1.text; Edit1.text의 내용이 "마이크'테스트"라고 있다고 가정 한다면

    ADOQuery1는 여지 없이 에라는 유발 시킬 껍니다..이유는 아시겠죠..



    두서 없이 떠들어 죄송 합니다..질문이 더 있으시면...

    강의실이나 Q/A를 찾아 보세요..



    감사 합니다.