Я пытаюсь вставить в SQL, но он продолжает давать мне ошибки - PullRequest
0 голосов
/ 04 мая 2019

Я хочу вставить в SQL через Java, но это дает мне ошибки

public void addStudent(String name, int SID, String gender, String major, String nationality, int mobileNo,
            String birthDate, int deptNo) {

        try {
            PreparedStatement stmt = conn.prepareStatement("insert into students values("+ SID+ ", '"+name+"','"
                    + gender+"',"+mobileNo + ",TO_Date('"+birthDate+"', 'DD/MM/YYYY'), '"+ major+"', '"+nationality+"', null, "+deptNo+");");
            stmt.execute();
        } catch (SQLException e) {

            e.printStackTrace();
            return;

        }
    }

java.sql.SQLSyntaxErrorException: ORA-00933: команда SQL неправильно закончился

Ответы [ 2 ]

1 голос
/ 04 мая 2019

Используйте PreparedStatement как показано ниже:

       try {
         //passing placeholder 
            PreparedStatement stmt = conn.prepareStatement("insert into students values(?,?,?,?,?,?,?,?,?)");
          //giving valuesto each placeholder 
           stmt.setInt(1,SID);
            stmt.setString(2,name);
            stmt.setString(3,gender);
            stmt.setInt(4,mobileNo );
            stmt.setDate(5,birthDate);
            stmt.setString(6,major);
            stmt.setString(7,nationality);
            stmt.setString(8,null);
            stmt.setInt(9,deptNo ); 
            //executing update,insert value in table
            stmt.executeUpdate();
        } catch (SQLException e) {

            e.printStackTrace();
            return;

        }
1 голос
/ 04 мая 2019

Я бы не советовал вам использовать PreparedStatement таким образом. Вот что я бы сделал:

public void addStudent(Student student){
      int SID = student.getSID();
      String name = student.getName();
      // etc ...

      String query = "INSERT INTO students VALUES(?,?)";

      try{

         PreparedStatement prep = conn.prepareStatement(query);
         prep.setInt(1,SID);
         prep.setString(2,name);
         // etc ...

         prep.executeUpdate();

      }catch (SQLException e){

            e.printStackTrace();

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