반응형
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
반응형
'source' 카테고리의 다른 글
PHP: 정의되지 않은 어레이 키를 처리하는 가장 빠른 방법 (0) | 2022.09.22 |
---|---|
Mac용 최고의 PHP IDE? (무료인 것이 좋습니다!) (0) | 2022.09.22 |
Tinyint vs Bit? (0) | 2022.09.22 |
GORM에서는 autoCreateTime 및 autoUpdateTime을 특정 시간대로 설정하려면 어떻게 해야 합니까? (0) | 2022.09.22 |
Larabel 5.2 - 커스텀프라이머리 키가 0이 되는 문자열 사용 (0) | 2022.09.22 |