|
일단, 쿼리문을 만들때 파라미터를 쓰면 좋을 것 같은데...
특히 문자열이 변수로 들어갈 때는 변수에 컴마나 쿼테이션 마크가 들어가서 SQL문이 깨질 수 있습니다. 이 때, 파라미터를 쓰면 컴포넌트가 알아서 처리해줍니다.
ADOQuery1->SQL->Add("insert into info");
ADOQuery1->SQL->Add("(ID, Pass, Passa, Target, Time)");
ADOQuery1->SQL->Add("values ");
ADOQuery1->SQL->Add("(:ID, :Pass, :Passa, :Target, :Time");
ADOQuery1->Parameters->ParamValues["ID"] = ID;
ADOQuery1->Parameters->ParamValues["Pass"] = Pass;
ADOQuery1->Parameters->ParamValues["Passa"] = Passa;
ADOQuery1->Parameters->ParamValues["Target"] = Target;
ADOQuery1->Parameters->ParamValues["Time"] = Time;
ADOQuery1->ExecSQL();
이런식으로 하면 문제를 찾기가 더 쉬울것 같습니다.
그리고 Parameter만 바꾸어서 다시 쿼리 할 때는,
...
ADOQuery1->Parameters->ParamValues["Pass"] = newPass;
ADOQuery1->Requery(TExecuteOptions());
처럼 하면 됩니다.
아카시아 님이 쓰신 글 :
: 아무리 찾아봐도 문법적인 에러가 없는데,
: 자꾸 위의 그림처럼 에러가 발생합니다.
: Build All Project를 할때는
: 아무 이상이 없는데,
: 클라이언트를 실행해서 디비에 저장하는
: 소스부분에 가게 되면
: 중간쯤에
: ADOQuery1->ExecSQL();
: ADOQuery1->SQL->Clear();
: 이부분에서 에러가 나거든요?
: 디버깅을 해도 항상 여기가 걸리고..
: 소스에 무슨 문제가 있는건가요?
:
: 아래는 제가 짜고 있는 쿼리문 소스입니다.
: ADOQuery1->Close();
: ADOQuery1->SQL->Clear();
: ADOQuery1->SQL->Add("insert into info");
: ADOQuery1->SQL->Add("(ID, Pass, Passa, Target, Time)");
: ADOQuery1->SQL->Add("values");
: ADOQuery1->SQL->Add("('"+id+"','"+ps+"','"+psa+"','"+coma+"','"+comb+"')");
: ADOQuery1->ExecSQL();
: ADOQuery1->SQL->Clear();
: ADOQuery1->SQL->Add("select* from info");
: ADOQuery1->Open();
|