source

SQL 오류 구문. 올바른 구문은 MariaDB 서버 버전에 해당하는 설명서를 확인하십시오.

factcode 2022. 9. 22. 00:07
반응형

SQL 오류 구문. 올바른 구문은 MariaDB 서버 버전에 해당하는 설명서를 확인하십시오.

preparedStatement를 사용하여 테이블에 새 값을 삽입하려고 하면 구문 오류가 발생하여 해결할 수 없습니다.

Java 코드:

String sql2 = "INSERT INTO Repondre VALUES ( ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(sql2);
preparedStatement.setInt(1, 1);
preparedStatement.setInt(2, 1);
preparedStatement.setInt(3,resultSet.getInt(1));
RadioButton rb = (RadioButton)q1.getSelectedToggle();
preparedStatement.setString(4,rb.getText().toLowerCase());
preparedStatement.executeUpdate(sql2);

에러 코드:

java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '?, ?, ?, ?)' at line 1

저는 당신이 저를 도와 감사할 수 있기를 바랍니다.

여기서 몇 가지 잠재적인 문제가 보입니다.먼저 SQL 문자열을 에 전달합니다.executeUpdate()틀렸습니다.호출하는 메서드의 버전은 준비된 스테이트먼트용이며 입력 파라미터가 필요 없기 때문에 올바르지 않습니다(콜하고 있습니다).Statement버전)을 참조해 주세요.두 번째, 삽입된 데이터에 대해 표적을 지정할 열을 나열하지 않았습니다.일반적으로 삽입물에 모든 열을 명시적으로 나열해야 합니다.이 두 가지를 조합하면 다음과 같은 수정 버전을 시험해 볼 수 있습니다.

String sql = "INSERT INTO Repondre (col1, col2, col3, col4) VALUES (?, ?, ?, ?)";
PreparedStatement ps = connection.prepareStatement(sql2);
ps.setInt(1, 1);
ps.setInt(2, 1);
ps.setInt(3, resultSet.getInt(1));
RadioButton rb = (RadioButton)q1.getSelectedToggle();
ps.setString(4, rb.getText().toLowerCase());
preparedStatement.executeUpdate();   // NO parameters here

참고: 데이터를 올바른 위치에 삽입하려면 열을 명시적으로 나열하는 것이 중요합니다.경우에 따라 열을 나열하지 않을 수 있으며, 언급한 데이터가 모두 같은 유형일 수 있습니다.이로 인해 미묘한 버그가 발생할 수 있습니다.

언급URL : https://stackoverflow.com/questions/59705453/sql-error-syntax-please-check-the-manual-that-corresponds-to-your-mariadb-serve

반응형