Dłuższe polecenia MySQL w JAVA

0

W swojej aplikacji mam kod dodający do stringa kolejne polecenia MySQL a następnie wysyłający polecenie w postaci tego stringa do serwera. Mam jednak z tym problem, gdyż polecenie okazuje się zbyt długie i serwer zwraca błąd. Wiem, że po stronie serwera należy ustawić odpowiednio parametr max_allowed_packet, jednak nie wiem jak ustawić ten parametr po stronie klienta (z poziomu JAVY). Pomoże ktoś?

(metoda służąca do połączenia z bazą)

public Connection polacz() {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/d1102", "root", "zaq12wsx");
			st = conn.createStatement();
			System.out.println("Połączono z bazą danych");
		} catch(Exception e) {
			System.out.println("Błąd połączenia z bazą danych");
		}
		return null;
	}
0
  1. Wiesz że jdbc ma taki bajer jak insertRowsBatch() gdzie możesz przekazać listę stringów? ;)
  2. A jesteś pewien że leci ci jakiś timeout? Jaki wyjątek dostajesz?
0
public void setQueryTimeout(int t) throws SQLException {
		st.setQueryTimeout(t);
	}

("st" to statement)

i później w metodzie dodającej rekordy do bazy, po wywołaniu metody łączącej z bazą i przed st.executeUpdate():

setQueryTimeout(1000);

Konsola java zwraca "SQL syntax" ale sprawdzałem i składnia polecenia z mojego stringa (niestety nie udało mi się znaleźć jakichkolwiek informacji nt. insertRowsBatch()) jest ok i działa w 100% z poziomu konsoli mysql.

0

Aha, problem dotyczy dopiero drugiego polecenia mysql (po średniku) pomimo tego, że jest identyczne jak pierwsze (tylko wartości inne) które działa prawidłowo.

0

OK, udało się bez timeout-ów. Skorzystałem z JDBC Batch zamiast stringa. Polecam zainteresowanym: http://brian.pontarelli.com/2011/06/21/jdbc-batch-vs-multi-row-inserts/

1 użytkowników online, w tym zalogowanych: 0, gości: 1