PreparedStatements

didi577

Bekanntes Mitglied
Hallo,

ich baue eine Anwendung mit vielen CRUD Operationen mit JavaFX und MySQL. Genügt es ein PreparedStatement Objekt (z.B. pst) für alle Abfragen etc. zu verwenden oder ist es besser für jede Abfrage etc. ein separates PreparedStatement Objekt zu erzeugen (z.B. pst, pst1, pst2 etc) ??? Wer kann mir helfen?
 

mrBrown

Super-Moderator
Mitarbeiter
Ganz generell: wenn man sowas hat: pst, pst1, pst2, hat man irgendwas gewaltig falsch gemacht.


Nutz statt pst vernünftig benannte Variablen mit sinnvollem Scope, die möglichen "Wiederverwendungen" sinken damit meist gegen Null.
 

mrBrown

Super-Moderator
Mitarbeiter
pst heißen doe imCode nicht. Das habe ich hier nur geschrieben um das Problem zu erklären. Was mache ich nun am besten?
Dies:

Nutz statt pst vernünftig benannte Variablen mit sinnvollem Scope, die möglichen "Wiederverwendungen" sinken damit meist gegen Null.

Wenn du trotz dessen noch vor der Frage stehst, kann man dir besser mit konkretem Code helfen.
Zeig doch mal eine Stelle, an der der zwischen "pst" und wiederverwenden und "pst1,pst2,pst3" schwankst ;)
 

didi577

Bekanntes Mitglied
Java:
public ObservableList<Task> getTasks(int employe, DateTimeFormatter dtf, Connection con1) {

       taskList.clear();

       try {
           pstTask = con1.prepareStatement(
                   "SELECT t.task_id, t.employe, t.task, t.task_type, t.binding, task_date, t.task_status FROM myteam.tasks t WHERE t.employe =? ORDER BY t.task_date");
           pstTask.setInt(1, employe);
           rs = pstTask.executeQuery();

           if (!rs.isBeforeFirst()) {

               tasks = FXCollections.emptyObservableList();

           } else {

               while (rs.next()) {

                   Task taskObject = new Task(rs.getInt("task_id"), rs.getInt("employe"), rs.getString("task"),
                           rs.getString("task_type"), rs.getString("binding"),
                           rs.getDate("task_date").toLocalDate().format(dtf), rs.getString("task_status"));

                   taskList.add(taskObject);

                   tasks = FXCollections.observableArrayList(taskList);

               }

               rs.close();
               pstTask.close();
           }

       } catch (SQLException e) {
           e.printStackTrace();

       }

       return tasks;

und

Java:
    public ObservableList<Notice> getNotices(int employe, DateTimeFormatter dtf, Connection con1) {

       noticeList.clear();

       try {
           pstNotice = con1.prepareStatement(
                   "SELECT n.notice_id, n.employe, n.notice, n.notice_date FROM myteam.notice n WHERE n.employe =? ORDER BY n.notice_date desc");
           pstNotice.setInt(1, employe);
           rs = pstNotice.executeQuery();

           if (!rs.isBeforeFirst()) {

               notices = FXCollections.emptyObservableList();

           } else {

               while (rs.next()) {

                   Notice noticeObject = new Notice(rs.getInt("notice_id"), rs.getInt("employe"),
                           rs.getString("notice"), rs.getDate("notice_Date").toLocalDate().format(dtf));

                   noticeList.add(noticeObject);

                   notices = FXCollections.observableArrayList(noticeList);

               }

               rs.close();
               pstNotice.close();
           }

       } catch (SQLException e) {
           e.printStackTrace();

       }

       return notices;
   }

sind zwei Abfragen mit zwei unterschiedlichen pst Objekten
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben