Q&A

  • 쿼리문 사용시 '' 의미가 머져 ? 널 값이라던데
> > > ===========================================

> > > procedure TForm1.Button2Click(Sender: TObject);

> > > var

> > > num, name, kor, eng, math, tot : integer;

> > > ave : double;

> > > str : string;

> > > begin

> > > num := strtoint(Edit1.Text);

> > >

> > > kor := strtoint(Edit3.Text);

> > > eng := strtoint(Edit4.Text);

> > > math := strtoint(Edit5.Text);

> > >

> > > tot := kor+eng+math;

> > > ave := tot/3;

> > >

> > > str := '';

> > > str := 'insert into student (' +

> > > 'num, s_name, kor, eng, math, tot, ave ) values ( '+

> > > ''''+Edit1.Text+''','''+Edit2.Text+''','+

> > > ''+inttostr(kor)+','+inttostr(eng)+','+inttostr(math)+','+

> > > ''+inttostr(tot)+','+Floattostr(ave)+')';

> > >

> > > Qy1.Close;

> > > Qy1.sql.clear;

> > > Qy1.sql.add(str);

> > > Qy1.ExecSql;

> > >

> > > gridshow;

> > > end;

> > > ===========================================



우선 소스는 위와 같습니다만,

str := 'insert into student (' +

'num, s_name, kor, eng, math, tot, ave ) values ( '+

''''+Edit1.Text+''','''+Edit2.Text+''','+

''+inttostr(kor)+','+inttostr(eng)+','+inttostr(math)+','+

''+inttostr(tot)+','+Floattostr(ave)+')';



여기에서 밑에 두 줄 앞에 있는 [ '' ] 의 의미가 잘 이해가 안되는 군요 ㅡㅡ;

(( ''''+Edit1.Text+''','''+Edit2.Text+''','+ ))

이 부분은 '''' 가 쿼리문에서 ' 로 찍기 위한것으로 Edit1.Text 즉 텍스트문이기 때문에 따옴표 까지 같이 들어가겠죠 ?



그런데 숫자 부분인 밑에 두 줄에서 맨 앞에 있는 [ '' ] 이 부분이 이해가 안갑니다.

토탈과 평균은 제외하고 각 과목들만 묶였군요..



따옴표 하나는 '''' 일텐데 달랑 두 개 만 찍으면 무슨 의미가 되는거죠 ?

앞에 텍스트 문은 ''',' 으로 끝났으니까 [ ', ] 따옴표 닫고 콤마까지 찍히는 거겠죠?

그 담에 '' 를 더해주면.. 에궁.. 모르겠습니다... ㅡㅡa 여기서 막히네요..



위의 코딩데루면 테이터베이스에 다음과 같은 행태루 데이터가 삽입 들어가겠져?



num s_name kor eng math tot avg

------------------------------------

insert into student( num, s_name, kor, eng, math, tot, ave ) values

('1','김개똥',90,80,30,220,67 );

insert into student( num, s_name, kor, eng, math, tot, ave ) values

('2','홍길똥',80,80,80,240,80 );



확실히 이해를 못해서리.. 설명좀 부탁드립니다.

과목도 숫자 총점 토탈도 숫자인데 [ '' ] <- 이러케 달랑 두 개만 찍고 시작을 하니..

도통이해가 안되네요. 중간에 필드가 하나씩 더 있는 것두 아닌데... ㅡㅡ;;



왜 밑에 두 줄은 '' 로 시작하나요 ? 널값이라고 설명을 듣긴 한것 같은데...

해당되는 필드가 없는데도 널 값이 필요한가요 ?

1  COMMENTS
  • Profile
    김승일 2001.03.19 04:38
    제 생각에는 앞에 따옴표 2개는 필요 없는것 같습니다.

    없이 해도 아마 동일한 결과가 나올걸로 예상되는데 아닌가요?



    델처버 wrote:

    > > > > ===========================================

    > > > > procedure TForm1.Button2Click(Sender: TObject);

    > > > > var

    > > > > num, name, kor, eng, math, tot : integer;

    > > > > ave : double;

    > > > > str : string;

    > > > > begin

    > > > > num := strtoint(Edit1.Text);

    > > > >

    > > > > kor := strtoint(Edit3.Text);

    > > > > eng := strtoint(Edit4.Text);

    > > > > math := strtoint(Edit5.Text);

    > > > >

    > > > > tot := kor+eng+math;

    > > > > ave := tot/3;

    > > > >

    > > > > str := '';

    > > > > str := 'insert into student (' +

    > > > > 'num, s_name, kor, eng, math, tot, ave ) values ( '+

    > > > > ''''+Edit1.Text+''','''+Edit2.Text+''','+

    > > > > ''+inttostr(kor)+','+inttostr(eng)+','+inttostr(math)+','+

    > > > > ''+inttostr(tot)+','+Floattostr(ave)+')';

    > > > >

    > > > > Qy1.Close;

    > > > > Qy1.sql.clear;

    > > > > Qy1.sql.add(str);

    > > > > Qy1.ExecSql;

    > > > >

    > > > > gridshow;

    > > > > end;

    > > > > ===========================================

    >

    > 우선 소스는 위와 같습니다만,

    > str := 'insert into student (' +

    > 'num, s_name, kor, eng, math, tot, ave ) values ( '+

    > ''''+Edit1.Text+''','''+Edit2.Text+''','+

    > ''+inttostr(kor)+','+inttostr(eng)+','+inttostr(math)+','+

    > ''+inttostr(tot)+','+Floattostr(ave)+')';

    >

    > 여기에서 밑에 두 줄 앞에 있는 [ '' ] 의 의미가 잘 이해가 안되는 군요 ㅡㅡ;

    > (( ''''+Edit1.Text+''','''+Edit2.Text+''','+ ))

    > 이 부분은 '''' 가 쿼리문에서 ' 로 찍기 위한것으로 Edit1.Text 즉 텍스트문이기 때문에 따옴표 까지 같이 들어가겠죠 ?

    >

    > 그런데 숫자 부분인 밑에 두 줄에서 맨 앞에 있는 [ '' ] 이 부분이 이해가 안갑니다.

    > 토탈과 평균은 제외하고 각 과목들만 묶였군요..

    >

    > 따옴표 하나는 '''' 일텐데 달랑 두 개 만 찍으면 무슨 의미가 되는거죠 ?

    > 앞에 텍스트 문은 ''',' 으로 끝났으니까 [ ', ] 따옴표 닫고 콤마까지 찍히는 거겠죠?

    > 그 담에 '' 를 더해주면.. 에궁.. 모르겠습니다... ㅡㅡa 여기서 막히네요..

    >

    > 위의 코딩데루면 테이터베이스에 다음과 같은 행태루 데이터가 삽입 들어가겠져?

    >

    > num s_name kor eng math tot avg

    > ------------------------------------

    > insert into student( num, s_name, kor, eng, math, tot, ave ) values

    > ('1','김개똥',90,80,30,220,67 );

    > insert into student( num, s_name, kor, eng, math, tot, ave ) values

    > ('2','홍길똥',80,80,80,240,80 );

    >

    > 확실히 이해를 못해서리.. 설명좀 부탁드립니다.

    > 과목도 숫자 총점 토탈도 숫자인데 [ '' ] <- 이러케 달랑 두 개만 찍고 시작을 하니..

    > 도통이해가 안되네요. 중간에 필드가 하나씩 더 있는 것두 아닌데... ㅡㅡ;;

    >

    > 왜 밑에 두 줄은 '' 로 시작하나요 ? 널값이라고 설명을 듣긴 한것 같은데...

    > 해당되는 필드가 없는데도 널 값이 필요한가요 ?