JTextField Eingabe in DB speichern

Bitte aktiviere JavaScript!
A

Anzeige




Vielleicht hilft dir unser Kurs hier weiter —> (hier klicken)
Java:
LocalDate start = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate end = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

for (LocalDate date = start; !date.isAfter(end); date = date.plusDays(1)) {
    preparedStatement.setDate(1, java.sql.Date.valueOf(date));
    preparedStatement.setDate(2, ...);
    // ...
    preparedStatement.addBatch();
}
preparedStatement.executeBatch();

Alles gut
Also, nur mal um zu gucken ob ich das jetzt richtig verstanden hab..
In der ersten Zeile der Schleife werden mehrere Zeilen für ein Datumsintervall geschrieben?

Und ab der 2. Zeile kommen dann meine restlichen Values rein, sprich, Leistung, Zug etc. ?

hab deinen Code mal eingefügt, alles importiert, aber jetzt meckert er wegen toInstant(). Wie muss ich das ganze ergänzen bzw. aufbauen?
 
In dem Beispiel wird davon ausgegangen, dass startDate und endDate vom Typ java.util.Date sind. Zum Rest später, muss kurz weg.
 
In der ersten Zeile der Schleife werden mehrere Zeilen für ein Datumsintervall geschrieben?

Und ab der 2. Zeile kommen dann meine restlichen Values rein, sprich, Leistung, Zug etc. ?
Ja. In der ersten Zeile innerhalb des Schleifenrumpfs wird der erste Parameter auf das jeweils aktuelle Datum gesetzt. In den restlichen Zeilen werden die anderen Parameter der Leistung gesetzt und mit addBatch werden die gesetzten Parameter zwischengespeichert. Nach der Schleife wird das Statement für alle zwischengespeicherten Parameter in einem Rutsch durchgeführt.
 
Okey danke dir
Bei toInstant sagt er mir "the method is undefined for the type string"



EDIT: Liegt der Fehler hier irgendwo?

Java:
            SimpleDateFormat sdf1 = new SimpleDateFormat("dd.MM.yyyy");
            
            String startDate = txtnDatumBeginn.getText();
            String endDate = txtnDatumEnde.getText();
            
            
            java.util.Date date1 = sdf1.parse(startDate);
            java.sql.Date sqlStartDate = new java.sql.Date(date1.getTime());  
            
            java.util.Date date2 = sdf1.parse(endDate);
            java.sql.Date sqlEndDate = new java.sql.Date(date2.getTime());
            

            DateFormat dateFormat = new SimpleDateFormat("hh:mm");
            Time time1 = new Time(dateFormat.parse(txtnAbfahrt.getText()).getTime());
            Time time2 = new Time(dateFormat.parse(txtnAnkunft.getText()).getTime());
 
Zuletzt bearbeitet:
Für den Code müsstest Du
Java:
LocalDate start = date1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDate end = date2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
verwenden.
 
Das hat zwar gepasst, aber es wird nur eine Zeile geschrieben. Es wird quasi nur das Startdatum reingepackt und es wird nicht weiter bis zum Enddatum gerechnet
 
Java:
package Database;

import java.sql.DriverManager;
//import java.sql.Array;
import java.sql.Connection;
//import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Time;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.text.ParseException;


public class DBWriter extends Editor {
    


    private static final String DB_DRIVER = "com.mysql.jdbc.Driver";
    private static final String DB_CONNECTION = "jdbc:mysql://localhost:3306/*******";
    private static final String DB_USER = "******;
    private static final String DB_PASSWORD = "******";

    public static void writeDB() throws ParseException {

        
        
        
        try {

            insertRecordIntoTable();

        } catch (SQLException e) {

            System.out.println(e.getMessage());

        }

    }

    private static void insertRecordIntoTable() throws SQLException, ParseException {

        Connection dbConnection = null;
        PreparedStatement preparedStatement = null;

        String insertTableSQL = "INSERT INTO leistungen"
                + "(Tage, Leistung, DatumBeginn, DatumEnde, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag, Feiertage, Zug, Linie, Abfahrt, Ankunft, Von, Nach, Stationen) VALUES"
                + "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
        


        try {
            
            

            String text1 = Mo.getText();
            int mo = Integer.parseInt(text1);
            String text2 = Di.getText();
            int di = Integer.parseInt(text2);
            String text3 = Mi.getText();
            int mi = Integer.parseInt(text3);
            String text4 = Do.getText();
            int DO = Integer.parseInt(text4);
            String text5 = Fr.getText();
            int fr = Integer.parseInt(text5);
            String text6 = Sa.getText();
            int sa = Integer.parseInt(text6);
            String text7 = So.getText();
            int so = Integer.parseInt(text7);
            String text8 = Ft.getText();
            int ft = Integer.parseInt(text8);
            
            
            SimpleDateFormat sdf1 = new SimpleDateFormat("dd.MM.yyyy");
            
            String startDate = txtnDatumBeginn.getText();
            String endDate = txtnDatumEnde.getText();
            
            
            java.util.Date date1 = sdf1.parse(startDate);
            java.sql.Date sqlStartDate = new java.sql.Date(date1.getTime());  
            
            java.util.Date date2 = sdf1.parse(endDate);
            java.sql.Date sqlEndDate = new java.sql.Date(date2.getTime());
            

            DateFormat dateFormat = new SimpleDateFormat("hh:mm");
            Time time1 = new Time(dateFormat.parse(txtnAbfahrt.getText()).getTime());
            Time time2 = new Time(dateFormat.parse(txtnAnkunft.getText()).getTime());
            

            
            String text9 = txtnLeistung.getText();
            int Leistung = Integer.parseInt(text9);
            
            
            
            dbConnection = getDBConnection();
            preparedStatement = dbConnection.prepareStatement(insertTableSQL);
            

            


            LocalDate start = date1.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
            LocalDate end = date2.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();



            for (LocalDate date = start; !date.isAfter(end); date = date.plusDays(1)) {
                preparedStatement.setDate(1, java.sql.Date.valueOf(date));
                preparedStatement.setInt(2, Leistung);
                preparedStatement.setDate(3, (java.sql.Date) sqlStartDate);
                preparedStatement.setDate(4, (java.sql.Date) sqlEndDate);
                preparedStatement.setInt(5, mo);
                preparedStatement.setInt(6, di);
                preparedStatement.setInt(7, mi);
                preparedStatement.setInt(8, DO);
                preparedStatement.setInt(9, fr);
                preparedStatement.setInt(10, sa);
                preparedStatement.setInt(11, so);
                preparedStatement.setInt(12, ft);
                preparedStatement.setString(13, txtnZug.getText());
                preparedStatement.setString(14, txtnLinie.getText());
                preparedStatement.setTime(15, time1);
                preparedStatement.setTime(16, time2);
                preparedStatement.setString(17, txtnStart.getText());
                preparedStatement.setString(18, txtnEnde.getText()); 
                preparedStatement.setString(19, STATIONEN);
                preparedStatement.addBatch();
            }
            preparedStatement.executeBatch();


            


            System.out.println("Record is inserted into DBUSER table!");

        } catch (SQLException e) {

            System.out.println(e.getMessage());

        } finally {

            if (preparedStatement != null) {
                preparedStatement.close();
            }

            if (dbConnection != null) {
                dbConnection.close();
            }

        }

    }
    private static Connection getDBConnection() {

        Connection dbConnection = null;

        try {

            Class.forName(DB_DRIVER);

        } catch (ClassNotFoundException e) {

            System.out.println(e.getMessage());

        }

        try {

            dbConnection = DriverManager.getConnection(
                    DB_CONNECTION, DB_USER,DB_PASSWORD);
            return dbConnection;

        } catch (SQLException e) {

            System.out.println(e.getMessage());

        }

        return dbConnection;

    }

    private static java.sql.Timestamp getCurrentTimeStamp() {

        java.util.Date today = new java.util.Date();
        return new java.sql.Timestamp(today.getTime());

    }

}
 
Und wenn Du in txtnDatumBeginn den "01.01.2019" und in txtnDatumEnde den "31.12.2019" eingibst, welcher Satz wird dann geschrieben?
 
Kannst Du mal unmittelbar nach
Java:
for (LocalDate date = start; !date.isAfter(end); date = date.plusDays(1)) {
noch
Java:
System.out.println(date);
einbauen und schauen, was ausgegeben wird?
 
Java:
2019-01-01
2019-01-02
2019-01-03
2019-01-04
2019-01-05
2019-01-06
2019-01-07
2019-01-08
2019-01-09
2019-01-10
2019-01-11
2019-01-12
2019-01-13
2019-01-14
2019-01-15
2019-01-16
2019-01-17
2019-01-18
2019-01-19
2019-01-20
2019-01-21
2019-01-22
2019-01-23
2019-01-24
2019-01-25
2019-01-26
2019-01-27
2019-01-28
2019-01-29
2019-01-30
2019-01-31
2019-02-01
2019-02-02
2019-02-03
2019-02-04
2019-02-05
2019-02-06
2019-02-07
2019-02-08
2019-02-09
2019-02-10
2019-02-11
2019-02-12
2019-02-13
2019-02-14
2019-02-15
2019-02-16
2019-02-17
2019-02-18
2019-02-19
2019-02-20
2019-02-21
2019-02-22
2019-02-23
2019-02-24
2019-02-25
2019-02-26
2019-02-27
2019-02-28
2019-03-01
2019-03-02
2019-03-03
2019-03-04
2019-03-05
2019-03-06
2019-03-07
2019-03-08
2019-03-09
2019-03-10
2019-03-11
2019-03-12
2019-03-13
2019-03-14
2019-03-15
2019-03-16
2019-03-17
2019-03-18
2019-03-19
2019-03-20
2019-03-21
2019-03-22
2019-03-23
2019-03-24
2019-03-25
2019-03-26
2019-03-27
2019-03-28
2019-03-29
2019-03-30
2019-03-31
2019-04-01
2019-04-02
2019-04-03
2019-04-04
2019-04-05
2019-04-06
2019-04-07
2019-04-08
2019-04-09
2019-04-10
2019-04-11
2019-04-12
2019-04-13
2019-04-14
2019-04-15
2019-04-16
2019-04-17
2019-04-18
2019-04-19
2019-04-20
2019-04-21
2019-04-22
2019-04-23
2019-04-24
2019-04-25
2019-04-26
2019-04-27
2019-04-28
2019-04-29
2019-04-30
2019-05-01
2019-05-02
2019-05-03
2019-05-04
2019-05-05
2019-05-06
2019-05-07
2019-05-08
2019-05-09
2019-05-10
2019-05-11
2019-05-12
2019-05-13
2019-05-14
2019-05-15
2019-05-16
2019-05-17
2019-05-18
2019-05-19
2019-05-20
2019-05-21
2019-05-22
2019-05-23
2019-05-24
2019-05-25
2019-05-26
2019-05-27
2019-05-28
2019-05-29
2019-05-30
2019-05-31
2019-06-01
2019-06-02
2019-06-03
2019-06-04
2019-06-05
2019-06-06
2019-06-07
2019-06-08
2019-06-09
2019-06-10
2019-06-11
2019-06-12
2019-06-13
2019-06-14
2019-06-15
2019-06-16
2019-06-17
2019-06-18
2019-06-19
2019-06-20
2019-06-21
2019-06-22
2019-06-23
2019-06-24
2019-06-25
2019-06-26
2019-06-27
2019-06-28
2019-06-29
2019-06-30
2019-07-01
2019-07-02
2019-07-03
2019-07-04
2019-07-05
2019-07-06
2019-07-07
2019-07-08
2019-07-09
2019-07-10
2019-07-11
2019-07-12
2019-07-13
2019-07-14
2019-07-15
2019-07-16
2019-07-17
2019-07-18
2019-07-19
2019-07-20
2019-07-21
2019-07-22
2019-07-23
2019-07-24
2019-07-25
2019-07-26
2019-07-27
2019-07-28
2019-07-29
2019-07-30
2019-07-31
2019-08-01
2019-08-02
2019-08-03
2019-08-04
2019-08-05
2019-08-06
2019-08-07
2019-08-08
2019-08-09
2019-08-10
2019-08-11
2019-08-12
2019-08-13
2019-08-14
2019-08-15
2019-08-16
2019-08-17
2019-08-18
2019-08-19
2019-08-20
2019-08-21
2019-08-22
2019-08-23
2019-08-24
2019-08-25
2019-08-26
2019-08-27
2019-08-28
2019-08-29
2019-08-30
2019-08-31
2019-09-01
2019-09-02
2019-09-03
2019-09-04
2019-09-05
2019-09-06
2019-09-07
2019-09-08
2019-09-09
2019-09-10
2019-09-11
2019-09-12
2019-09-13
2019-09-14
2019-09-15
2019-09-16
2019-09-17
2019-09-18
2019-09-19
2019-09-20
2019-09-21
2019-09-22
2019-09-23
2019-09-24
2019-09-25
2019-09-26
2019-09-27
2019-09-28
2019-09-29
2019-09-30
2019-10-01
2019-10-02
2019-10-03
2019-10-04
2019-10-05
2019-10-06
2019-10-07
2019-10-08
2019-10-09
2019-10-10
2019-10-11
2019-10-12
2019-10-13
2019-10-14
2019-10-15
2019-10-16
2019-10-17
2019-10-18
2019-10-19
2019-10-20
2019-10-21
2019-10-22
2019-10-23
2019-10-24
2019-10-25
2019-10-26
2019-10-27
2019-10-28
2019-10-29
2019-10-30
2019-10-31
2019-11-01
2019-11-02
2019-11-03
2019-11-04
2019-11-05
2019-11-06
2019-11-07
2019-11-08
2019-11-09
2019-11-10
2019-11-11
2019-11-12
2019-11-13
2019-11-14
2019-11-15
2019-11-16
2019-11-17
2019-11-18
2019-11-19
2019-11-20
2019-11-21
2019-11-22
2019-11-23
2019-11-24
2019-11-25
2019-11-26
2019-11-27
2019-11-28
2019-11-29
2019-11-30
2019-12-01
2019-12-02
2019-12-03
2019-12-04
2019-12-05
2019-12-06
2019-12-07
2019-12-08
2019-12-09
2019-12-10
2019-12-11
2019-12-12
2019-12-13
2019-12-14
2019-12-15
2019-12-16
2019-12-17
2019-12-18
2019-12-19
2019-12-20
2019-12-21
2019-12-22
2019-12-23
2019-12-24
2019-12-25
2019-12-26
2019-12-27
2019-12-28
2019-12-29
2019-12-30
2019-12-31
 
Was ich seltsam finde, ist dass keine Exception geworfen wird.

Wie sieht denn das DDL-Statement für die Tabelle aus? (CREATE TABLE ...)
 
meinst du das hier ?
Java:
String insertTableSQL = "INSERT INTO leistungen"
                + "(Tage, Leistung, DatumBeginn, DatumEnde, Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag, Feiertage, Zug, Linie, Abfahrt, Ankunft, Von, Nach, Stationen) VALUES"
                + "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
Die Tabelle ist schon lange erstellt
Vielleicht läuft das einfach über mysql nicht.. oder per phpmyadmin geht es nicht.
 
Ich wusste nichtmal, was DDL ist... aber daran lag es..

Es lag daran, dass ich anscheinend einen Primary Key erstellt hatte. Hab den mal wieder gelöscht und jetzt funktioniert es!
Vielen Dank :)

Ich habe das gebraucht, weil ich diverse Qualitätsberichte fürs ganze Jahr erzeugen muss (in PDF oder HTML Format)

Das wäre die nächste Aufgabe, aber du hast schon echt viel getan!:)
 
Es lag daran, dass ich anscheinend einen Primary Key erstellt hatte. Hab den mal wieder gelöscht und jetzt funktioniert es!
Du solltest auch einen PK haben. Die Frage ist nur, wie der aussieht. Im einfachsten Fall führst Du eine auto_increment ID-Spalte ein.
Ich wusste nichtmal, was DDL ist...
DDL = Data Definition Language, DML = Data Manipulation Language :)

Ich habe das gebraucht, weil ich diverse Qualitätsberichte fürs ganze Jahr erzeugen muss (in PDF oder HTML Format)
Wenn es nur darum geht, kannst Du z. B. auch einfach zwei Spalten für einen Zeitraum in die Tabelle aufnehmen, und dann nur einen Satz für die Leistung mit entsprechendem Zeitraum ("01.01.2019", "31.12.2019") schreiben. Dann lassen sich per Abfrage die betreffenden Leistungen heraussuchen.

Beispiel: gib mir alle Leistungen, die in den Zeitraum 01.12.2019 bis 31.03.2020 fallen.

SELECT * FROM leistung WHERE bis_datum >= '2019-12-01' and von_datum <= '2020-03-31';
 
Problem ist, dass ich auch Meldungen (Baustelle, Ausfall etc.) setzen muss für bestimmte Tage.

Schau mal, habe diesen Code gefunden, der eine PDF mit iText erstellt. Wie kann ich jetzt (oder morgen:D) die Tabelle aus der DB hier rein übergeben?

Java:
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfWriter;

public class PdfSchreiben {

    public static final String PDF = "/Users/*******/Desktop/document.pdf";

    public void createPdf(String filename) throws DocumentException,
            IOException {
        Document document = new Document();
        PdfWriter writer = PdfWriter.getInstance(document,
                new FileOutputStream(filename));
        document.open();

        PdfContentByte cb = writer.getDirectContent();
        BaseFont bf = BaseFont.createFont();
     //   setImage(cb, "img/memory.png", 40);
        cb.beginText();
        cb.setFontAndSize(bf, 12);
        cb.moveText(20, 105);
        cb.showText("Falsches Üben von Xylophonmusik quält jeden größeren Zwerg.");
        cb.moveText(120, -16);
        cb.setCharacterSpacing(2);
        cb.setWordSpacing(12);
        cb.newlineShowText("Erst recht auch jeden kleineren.");
        cb.endText();

        document.close();

    }

    private void setImage(PdfContentByte cb, String imgPath, float scalePercent)
            throws MalformedURLException, IOException, DocumentException {
        Image img = Image.getInstance(imgPath);
        img.scalePercent(scalePercent);
        img.setAbsolutePosition(cb.getXTLM(), cb.getYTLM());
        cb.addImage(img);
    }

    private void printMeasures(){
        System.out.println("A4-Ma\u00DFe: " + PageSize.A4.getWidth() + "pt x "
                + PageSize.A4.getHeight() + "pt - "
                + (PageSize.A4.getWidth() * 0.3527) + "mm x "
                + (PageSize.A4.getHeight() * 0.3527) + "mm");
    }

    public static void main(String[] args) throws DocumentException,
            IOException {
        PdfSchreiben ps = new PdfSchreiben();
        ps.createPdf(PDF);
        ps.printMeasures();
        System.out.println("done");
    }
}
 
Ich hatte dir grade eine schöne Privatmessage verfasst, aber leider kann ich sie dir nicht schicken :p
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben