Проблема с обновлением запроса в Mysql с JDBC - PullRequest
0 голосов
/ 02 апреля 2019
  1. см. Скриншоты
  2. см. Второй скриншот
  3. см. Третий скриншот

Хорошо, поэтому я строю проект на java и mysql, я застрял в этой точке, что мне нужно обновить данные, которые находятся в MySql, но из моего приложения java GUI я выполнил эту команду обновления из командной строки MySql клиент

update user set bldu = 50 where userid = 1001;

и там он прекрасно работает, но из моего java-приложения при нажатии на назначенную кнопку j он говорит:

у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с 'userid = 1001' в строке 1

Пожалуйста, помогите мне ..!

Ответы [ 5 ]

2 голосов
/ 02 апреля 2019

На первом скриншоте необходимо добавить пробел перед предложением WHERE:

String query = "UPDATE user SET bdlu = " + bldut + "WHERE userid = " + uid + ";";

Таким образом, ваш запрос будет интерпретирован как:

UPDATE user SET bdlu = 50WHERE userid = 1001

Итак, вы вызовете синтаксическую ошибку.

Тогда у вас будет следующий запрос:

String query = "UPDATE user SET bdlu = " + bldut + " WHERE userid = " + uid + ";";
2 голосов
/ 02 апреля 2019
String query = "update user SET bldu = " + bldut + " WHERE userid = " + uid + ";";

используйте этот вместо старого запроса, может быть, это полезно для вас.

0 голосов
/ 03 апреля 2019

Пожалуйста, используйте этот код в вашем Java-файле, внесите изменения в соответствии с вашим файлом. Ваша проблема в том, что вы используете тот же запрос в наборе результатов, который уже используется для обновления

Connection conn = DriverManager.getConnection ( "jdbc: mysql: // localhost: 3306 / bdb", "root", "root");

попробуй {

    String query = "update user SET bldu = " + bldut+ " WHERE userid = " + uid + ";";           
    // create the java mysql update preparedstatement
    Class.forName("com.mysql.jdbc.Driver").newInstance();

    PreparedStatement preparedStmt = conn.prepareStatement(query);
    preparedStmt.executeUpdate();

    query = "select * from user  WHERE userid = " + uid +";";
    ResultSet rs = stmt.executeQuery(query);
    // STEP 5: Extract data from result set
    while (rs.next()) {
        // Retrieve by column name
        String userid = rs.getString("userid");
        String userfname = rs.getString("userfname");
        // all your column
        // Display values
        System.out.print("userid: " + userid);
    }
    // STEP 6: Clean-up environment
    rs.close();
    stmt.close();
    conn.close();
} catch (Exception e) {
    System.err.println("Got an exception! ");
    System.err.println(e.getMessage());
} finally {
    // finally block used to close resources
    try {
        if (conn != null)
            conn.close();
    } catch (SQLException se) {
        se.printStackTrace();
    }// end finally try
}// end try
0 голосов
/ 02 апреля 2019

Хорошо, ребята, я кое-что выяснил, что это работает, я имею в виду, что эта программа обновляет данные, сохраненные в mysql, из netbeans через jdbc, но не перестанет показывать это сообщение об ошибке, например:

"Невозможно выполнить операторы обработки данных с executeQuery ()"

каждый раз, когда я щелкаю тот, который назначил jButton ..! но я проверил базу данных, значение, которое я хочу изменить, меняется, но тогда почему он показывает эту ошибку ..?

0 голосов
/ 02 апреля 2019

Попробуйте этот фрагмент в вашем коде.

String query = "update user SET bldu = " + bldut + " WHERE userid = " + uid + ";";
Statement = con.prepareStatement(query);
Statement.executeUpdate();

просматривая свой код, вы не можете сохранить результаты запроса на обновление в resultSet. ExecuteUpdate () возвращает только 0 или 1 для успеха и неудачи обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...