MySQL에는 두 개의 테이블 tableA
과 tableB
. 두 가지 쿼리를 실행하려고합니다.
executeQuery(query1)
executeQuery(query2)
하지만 다음과 같은 오류가 발생합니다.
can not issue data manipulation statements with executeQuery().
이것은 무엇을 의미 하는가?
답변
당신이 실제로 필요한 데이터를 조작하기 executeUpdate()
보다는를 executeQuery()
.
다음 executeUpdate()
은 이미 그 자체로 대답 인 javadoc 에서 발췌 한 것입니다.
INSERT, UPDATE 또는 DELETE 문이나 아무것도 반환하지 않는 SQL 문 (예 : SQL DDL 문) 일 수있는 지정된 SQL 문을 실행합니다.
답변
답변
스프링 부트를 사용하는 경우 @Modifying 주석을 추가하기 만하면됩니다.
@Modifying
@Query
(value = "UPDATE user SET middleName = 'Mudd' WHERE id = 1", nativeQuery = true)
void updateMiddleName();
답변
사용 executeUpdate()
문제 데이터 조작 문에. executeQuery()
SELECT 쿼리 (즉, 결과 집합을 반환하는 쿼리)에만 해당됩니다.
답변
쿼리 삭제의 경우-다음 @Modifying
과 같이 사용 @Transactional
하기 전에 @Query
:-
@Repository
public interface CopyRepository extends JpaRepository<Copy, Integer> {
@Modifying
@Transactional
@Query(value = "DELETE FROM tbl_copy where trade_id = ?1 ; ", nativeQuery = true)
void deleteCopyByTradeId(Integer id);
}
java.sql.SQLException: Can not issue data manipulation statements with executeQuery()
오류가 발생 하지 않습니다 .
답변
그게 뭐야 executeUpdate
목적입니다.
다음은 차이점에 대한 간략한 요약입니다. http://www.coderanch.com/t/301594/JDBC/java/Difference-between-execute-executeQuery-executeUpdate
답변
이 코드는 나를 위해 작동합니다. INSERT로 값을 설정하고이 값의 LAST_INSERT_ID ()를 SELECT로 가져옵니다. Java NetBeans 8.1, MySql 및 java.JDBC.driver를 사용합니다.
try {
String Query = "INSERT INTO `stock`(`stock`, `min_stock`,
`id_stock`) VALUES ("
+ "\"" + p.get_Stock().getStock() + "\", "
+ "\"" + p.get_Stock().getStockMinimo() + "\","
+ "" + "null" + ")";
Statement st = miConexion.createStatement();
st.executeUpdate(Query);
java.sql.ResultSet rs;
rs = st.executeQuery("Select LAST_INSERT_ID() from stock limit 1");
rs.next(); //para posicionar el puntero en la primer fila
ultimo_id = rs.getInt("LAST_INSERT_ID()");
} catch (SqlException ex) { ex.printTrace;}