Czy masz dostęp do MySQL inny niż przez JDBC - Administrator MySQL? Lub wiersz poleceń?
OMG Kucyki
mam dostęp do administratora mysql. jednak wymóg jest taki, że. baza danych mysql zostanie utworzona, zmodyfikowana, zaktualizowana itp. za pomocą administratora mysql, ale potem wszystkie operacje muszą być wykonane za pomocą java.
silverkid
Lepiej jest włączyć tworzenie indeksu do skryptów do tworzenia bazy danych niż za pośrednictwem JDBC, prawdopodobnie po tym, jak można już było z nich korzystać.
Oto wyciąg z executeUpdate()javadoc, który sam w sobie jest już odpowiedzią:
Wykonuje daną instrukcję SQL, która może być instrukcją INSERT, UPDATE lub DELETE albo instrukcją SQL, która nic nie zwraca, na przykład instrukcja SQL DDL.
do usunięcia instrukcji w wiosennym repozytorium rozruchu @Transactional pomoże
Abhishek Chudekar
1
codar.club/blogs/5cd7f06bec80a.html wyjaśnia użycie adnotacji modyfikujących, transakcyjnych i zapytań. Rozwiązałem swój problem za pomocą: @Modifying(clearAutomatically = true) @Transactionaltuż nad adnotacją @Query definiującą moje zapytanie o usunięcie
user666
16
Służy executeUpdate()do wydawania instrukcji manipulacji danymi. executeQuery()jest przeznaczony tylko dla zapytań SELECT (tj. zapytań, które zwracają zestaw wyników).
Ten kod działa dla mnie: ustawiam wartości z INSERT i otrzymuję LAST_INSERT_ID () tej wartości z SELECT; Używam java NetBeans 8.1, MySql i java.JDBC.driver
try{StringQuery="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;}
Nie oczekuje ResultSet. Zamiast tego zwracaResultSet .
BalusC
2
Oczekuje zestawu wyników z bazy danych, co mam na myśli.
Neil N,
2
@Modifying@Transactional@Query(value ="delete from cart_item where cart_cart_id=:cart", nativeQuery =true)publicvoid deleteByCart(@Param("cart")int cart);
Nie zapomnij dodać @Modifying i @Transnational przed @query. mi to pasuje.
Aby usunąć rekord z jakimś stanem za pomocą natywnego zapytania z JPA, ważne są wspomniane wyżej adnotacje.
Witaj! Pamiętaj, że pytania i odpowiedzi na temat Stack Overflow muszą być napisane w języku angielskim (w przeciwnym razie istnieje ryzyko usunięcia i / lub tłumaczenia Google). Twoje zdrowie! ( Hola! Como las cabezas para arriba, las preguntas y respuestas sobre Stack Overflow debe estar escrito en Inglés (de lo contrario corren el riesgo de eliminación y / o Google Traductor). ¡Salud! )
Odpowiedzi:
Aby manipulować danymi, których faktycznie potrzebujesz,
executeUpdate()
a nieexecuteQuery()
.Oto wyciąg z
executeUpdate()
javadoc, który sam w sobie jest już odpowiedzią:źródło
Podczas wykonywania instrukcji DML należy raczej użyć
executeUpdate
/execute
niżexecuteQuery
.Oto krótkie porównanie:
źródło
Jeśli używasz rozruchu sprężynowego, po prostu dodaj adnotację @Modifying.
źródło
@Modifying(clearAutomatically = true) @Transactional
tuż nad adnotacją @Query definiującą moje zapytanie o usunięcieSłuży
executeUpdate()
do wydawania instrukcji manipulacji danymi.executeQuery()
jest przeznaczony tylko dla zapytań SELECT (tj. zapytań, które zwracają zestaw wyników).źródło
W przypadku zapytania o usunięcie - użyj przed
@Modifying
i@Transactional
przed@Query
takimi jak: -To nie da
java.sql.SQLException: Can not issue data manipulation statements with executeQuery()
błędu.źródło
Po to
executeUpdate
jest.Oto bardzo krótkie podsumowanie różnicy: http://www.coderanch.com/t/301594/JDBC/java/Difference-between-execute-executeQuery-executeUpdate
źródło
Ten kod działa dla mnie: ustawiam wartości z INSERT i otrzymuję LAST_INSERT_ID () tej wartości z SELECT; Używam java NetBeans 8.1, MySql i java.JDBC.driver
źródło
executeQuery()
zwraca aResultSet
. Nie jestem tak zaznajomiony z Javą / MySQL, ale do tworzenia indeksów prawdopodobnie potrzebujeszexecuteUpdate()
.źródło
ResultSet
. Zamiast tego zwracaResultSet
.Nie zapomnij dodać @Modifying i @Transnational przed @query. mi to pasuje.
Aby usunąć rekord z jakimś stanem za pomocą natywnego zapytania z JPA, ważne są wspomniane wyżej adnotacje.
źródło
Oprócz funkcji executeUpdate () w nawiasach należy również dodać zmienną, aby używać instrukcji SQL.
Na przykład:
źródło