2013-07-09 4 views
1

Xojo 2013 버전 1을 사용하고 있습니다. SQLite 데이터베이스에서 레코드를 삭제하려고합니다. 그러나 나는 비참하게 실패하고있다. 레코드를 삭제하는 대신 레코드를 복제합니다. 나는 동적 명령을 생성하고XOJO SQLite 데이터베이스에서 레코드 삭제

command = "DELETE * from names where ID = 10" 

namesDB.SQLExecute(command) 

: 여기

은 내가 사용하는 코드입니다. 그러나 나는 그것을 변화시킨다. 항상 똑같이한다. 따옴표 유무와 상관없이 같은 결과.

아이디어가 있으십니까?

+0

'*'제거를 시도 했습니까? –

+0

예. 같은 결과 – EnterpriseXL

+0

문제가 무엇인지 알아 냈습니까? –

답변

2

가장 먼저해야 할 일은 오류가 생성되었는지 확인하는 것입니다.

if namesDB.Error then 
    dim s as string = namesDB.errorMessage 
    msgbox s 
    return 
end 

데이터베이스 오류 및 오류가 있는지 알려줍니다. 오류가 없다면 문제는 다른 곳에 있습니다.

FWIW, 항상 항상 항상 모든 DB 작업 후에 오류 비트를 확인하십시오. 다른 언어와 달리 Xojo는 데이터베이스 오류가있는 경우 예외를 생성하거나 throw하지 않으므로 확인해야합니다.

1

Commit()을 (를) 호출 해보십시오.

는 그냥 "이름"테이블 샘플 SQLite 데이터베이스를 만들고,이 코드는 잘 작동 :

db.SQLExecute("Delete from names where ID=2") 
db.Commit 

내가 XOJO과 SQLite는과 많은 작업을 수행했으며, 그들이 함께 잘 작동합니다. 나는 당신이보고 할 때 기록이 잘못 복제 된 것을 본 적이 없다. 그것은 매우 이상합니다. 이 방법이 도움이되지 않는다면 더 많은 코드를 게시하십시오. 예를 들어, 귀하의 "명령"변수는 문자열이라고 가정합니다. 그러나 아마도 Variant 등일 수도 있습니다.

+0

나는 시간과 시간과 같은 결과를 보냈습니다. 이것이 정확히 일어난 일입니다. 나는 ID = 3을 가지고 있다고 말하면서 그것을 삭제한다. 그러나 그것은 사라졌지 만 새로운 데이터 (같은 데이터)가 위치 4에 생성되고 세 개가 사라진다. 명령 문자열을 하드 코딩했습니다 ... 동적으로 변환하십시오 ... 어떤 이유로 든 똑같습니다. – EnterpriseXL

0

SQLite에 나는 DELETEFROM 사이에 *가 필요하지 않다고 생각합니다.

관련 문제