Мои исследования, посвященные auto_generated_keys, дали мне несколько советов о подготовленных операциях, которые могут быть прослушиваемы, но никаких проблем, касающихся обычных операторов, как видно ниже.автозавершение оператора сгенерировано. Ключи кажутся бесполезными. Java w/MariaDB 10.x
Код до сих пор дает мне ключи в наборе результатов, который имеет столько строк, сколько обновляется. Но, по моим ожиданиям, метод getInt (1) не дает мне идентификатор с автоматическим добавлением таблицы, а автоматически учитывает значение от 1 до конца набора результатов.
В чем я ошибаюсь? Я изменил код, чтобы использовать com.mysql.jdbc, поскольку разъемы org.mariadb.jdbc обновлены до последней версии.
Или это еще один вариант, который мне нужно установить где-нибудь?
Anyways за вашу помощь еще нет.
public void updateFZSetToUsed() {
/*
* Variablendeklaration
*
*/
Connection conn = null;
Statement stmt1 = null, stmt2 = null;
ResultSet rs = null, rs2 = null;
String stmtstr1, stmtstr2;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (Exception WPex) {
System.out.println(WPex);
}
try {
conn = DriverManager.getConnection("jdbc:mysql://"+configVars.getProperty("serverIP")+"/"+configVars.getProperty("db")+"?", configVars.getProperty("usr"), configVars.getProperty("pw"));
stmt2 = conn.createStatement();
stmt2.executeUpdate("UPDATE fz SET fz_used = 1 WHERE fz_id in (SELECT calls_fz FROM calls)", Statement.RETURN_GENERATED_KEYS);
rs2 = stmt2.getGeneratedKeys();
while(rs2 != null && rs2.next()) {
System.out.println(rs2.getInt(1));
}
} catch (SQLException singleStoreExc) {
// handle any errors
System.out.println("updateFZSetToUsed SQLException: " + singleStoreExc.getMessage());
System.out.println("updateFZSetToUsed SQLState: " + singleStoreExc.getSQLState());
System.out.println("updateFZSetToUsed VendorError: " + singleStoreExc.getErrorCode());
return retString;
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException sqlEx)
{
System.out.println("rsclose fehler");
}
rs = null;
}
if (rs2 != null) {
try {
rs2.close();
} catch (SQLException sqlEx)
{
System.out.println("rs2close fehler");
}
rs2 = null;
}
if (stmt1 != null) {
try {
stmt1.close();
} catch (SQLException sqlEx) {
System.out.println("stmt1cclose fehler");
}
stmt1 = null;
}
if (stmt2 != null) {
try {
stmt2.close();
} catch (SQLException sqlEx) {
System.out.println("stmt2cclose fehler");
}
stmt2 = null;
}
if (stmt2 != null) {
try {
stmt2.close();
} catch (SQLException sqlEx) {
System.out.println("stmt2cclose fehler");
}
stmt2 = null;
}
if (conn != null) {
try {
conn.close();
}
catch (SQLException sqlEx) {
System.out.println("conn close() Error "+sqlEx);
}
}
}
}
Эй, спасибо за ваш ответ. Мне нужно было быстрое решение, поэтому я создаю работу для своей проблемы. (2 разных вопроса, насколько я помню) Но на самом деле это похоже на то, как вы описали: значения id возвращаются только операторами INSERT. Возможно, моя память обманула меня по этой детали, когда я попытался вспомнить спецификации команд mysqlI-XXX из php. Еще раз спасибо за ваш вклад. Я ценю это. – DigitalDude