2012-03-14 5 views
0

Joomla 사이트에 기사를 추가하는 자바 애플리케이션을 작성했습니다.
JDBC를 사용하여 MySQL 데이터베이스에 쿼리를 연결하고 실행합니다.
기사를 만들려면 _contents 테이블 (삽입)과 _assets 테이블 (3 개의 업데이트 & 삽입) 중 3 개에 대한 쿼리를 실행해야합니다.
_assets 테이블에서 실행해야하는 세 가지 쿼리는 항목을 "중첩 목록 트리"에 삽입하는 데 사용됩니다. 따라서 이러한 쿼리 중 하나가 실패하면 중첩 목록 트리가 중단됩니다.
내 프로그램이 원격 시스템의 데이터베이스에 액세스하고 있습니다 (인터넷 연결 문제 또는 다른 이유로 인해 쿼리가 중단 될 수 있습니다).
세 쿼리가 모두 누락되지 않고 서로 실행되는지 어떻게 확인할 수 있습니까?JDBC에서 즉시 4 개의 mysql 쿼리를 실행하십시오.

감사합니다.

+0

이러한 쿼리를 수행하기 전에 새 데이터베이스 트랜잭션을 시작하고 모든 트랜잭션이 실행 된 후에 트랜잭션을 커밋 할 수 있습니다. 그렇게하면 그 중 하나가 실패하면 이전 쿼리가 취소됩니다. – fajran

답변

2

나는 거래가 당신이 찾고있는 것이라고 생각합니다.

http://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html

+0

Unfortunatly MySQL MYISAM 엔진이 트랜잭션을 지원하지 않습니다! – RYN

+1

네, 질문에 MyISAM을 언급하지 않았습니다. 관련 테이블을 InnoDB로 변경할 수 없다면 아마도 각 쿼리를 확인한 다음 성공할 때만 계속 진행하면된다. StoredProcs 서버 측은 트랜잭션 동작 (원 자성)을 보장하지 않으므로 도움이되지 않습니다 – moodywoody

1

또한 4 개 쿼리를 결합하는 "저장 프로 시저"에 Mysql-Transactions를 사용할 수 있습니다. 이 방법을 사용하면 업데이트가 성공할 확률이 더 높습니다 (데이터베이스에서 Java 메소드가 실패 할 수도 있음). 다른 프로그램/프로그래밍 언어를 사용하려는 경우 업데이트 처리가 동일하므로 더 이상 신경 쓸 필요가 없습니다.

그러나 Java 프로그램을 하나만 사용하는 경우 나에게 자바가 sql보다 쉽기 때문에 트랜잭션을 사용합니다 (특히 봄 및 지속성 공급자 (예 : 최대 절전 모드 (Spring Transactions, hibernate transactions)).

+0

Unfortunatly MySQL MYISAM 엔진이 트랜잭션을 지원하지 않습니다! – RYN

관련 문제