먼저 답변해 주셔셔 고맙습니다.
에러 메시지를 보면 아래와 같습니다.
[Microsoft][ODBC SQL Server Driver][SQL Server]이름 'edtId'은(는) 이 컨텍스트에서 사용할 수 없습니다. 여기서는 상수, 식, 변수? 사용할 수 있고 열 이름은 사용할 수 없습니다.
라고 나옵니다.
각각의 필드속성은 varchar로 하였습니다.크기는 50정도로 하였으며..
위의 edtId는 입력되는 데이터입니다..
Table을 이용했을때는 입력이 되었으므로 Demo1 테이블은 존재합니다.
한번더 답변 부탁합니다..
------------------------------------------
안녕하세요..
SQL문으로 MS-SQL에 데이터를 입력하려 합니다.
아래와 같은 구문을 사용하였습니다.
qry.SQL.Clear;
qry.SQL.Add('insert into Demo1 (ID,Jibun1,Jibun2,Dong) values("'+edtId.Text+'","'+edtJibun1.Text+'","'+edtJibun2.Text+'","'+edtDong.Text+'")');
qry.ExecSQL;
위의 구문을 로컬용으로 Paradox를 이용하여 DB를 만을었을 경우에는 에러가 발생하지 않으나 MS-SQL에 사용하였을때는 에러가 발생하네요..
구문이 틀린것인지 제가 잘못사용한것인지 모르겠네요..
참고로 Query를 사용하여 않고 Table을 이용하였을 경우에는 입력이 되네요..
답변 부탁합니다..
----------------------------------------------
쿼리 분석기에서 돌려본 결과 님이 쌍따옴표를 사용한게 문제가 되는군요... ㅋㅋㅋ
"' <- 이거 대신 '''' + edtld.text + '''', 이런식으로 전부 변환해주셔야 될거 같네염... ㅡ.ㅡ
그리고 값을 직적입력하는 것은 많은 혼란을 가져오니 유지보수를 위해서도
다음과 같이 파라미터를 사용해서 입력하도록 해보세요...
예) TADOQuery를 사용한 경우, TQuery를 사용한 경우에는 파라미터 값을 주는 방법이 다를 겁니다. 찾아보세여... ^^
with ADOQuery1 do begin
Close;
with SQL do begin
Clear;
Add('INSERT INTO DEMO1(ID, JIBUN1, JIBUN2, DONG)');
Add(' VALUES(:pID, :pJIBUN1, :pJIBUN2, :pDONG)');
Parameters.ParamByName('pID').Value := edtId.Text;
Parameters.ParamByName('pJIBUN1').Value := edtJibun1.Text
Parameters.ParamByName('pJIBUN2').Value := edtJibun2.Text
Parameters.ParamByName('pDONG').Value := edtDong.Text
end;
ExecSQL;
end;