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
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"
+ "(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
Doch, natürlich funktioniert das mit mysql.Die Tabelle ist schon lange erstellt
Vielleicht läuft das einfach über mysql nicht..
Nein, das wäre das DML-Statement, das DDL-Statement fängt mit CREATE TABLE an. Es geht darum, wie die Tabelle definiert ist, welche Spalten und -typen und welches Keys es gibt.meinst du das hier ?
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.Es lag daran, dass ich anscheinend einen Primary Key erstellt hatte. Hab den mal wieder gelöscht und jetzt funktioniert es!
DDL = Data Definition Language, DML = Data Manipulation LanguageIch wusste nichtmal, was DDL ist...
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.Ich habe das gebraucht, weil ich diverse Qualitätsberichte fürs ganze Jahr erzeugen muss (in PDF oder HTML Format)
SELECT * FROM leistung WHERE bis_datum >= '2019-12-01' and von_datum <= '2020-03-31';
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");
}
}
import java.io.*;
import java.sql.*;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
public class Test {
public static void createPdf(String filename, ResultSet rs) {
try {
Document doc = new Document();
PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream(filename));
doc.open();
doc.add(newTable(rs));
doc.close();
} catch (IOException | DocumentException ex) {
ex.printStackTrace();
}
}
private static PdfPTable newTable(ResultSet rs) throws IOException {
try {
ResultSetMetaData md = rs.getMetaData();
int cols = md.getColumnCount();
PdfPTable table = new PdfPTable(cols);
addTableHeader(table, md);
addTableBody(table, md, rs);
return table;
} catch (SQLException ex) {
throw new IOException(ex);
}
}
private static void addTableHeader(PdfPTable table, ResultSetMetaData md)
throws SQLException {
for (int i = 0, n = md.getColumnCount(); i < n; i++) {
table.addCell(newHeaderCell(md.getColumnLabel(i+1)));
}
}
private static void addTableBody(PdfPTable table, ResultSetMetaData md, ResultSet rs)
throws SQLException {
while (rs.next()) {
for (int i = 0, n = md.getColumnCount(); i < n; i++) {
table.addCell(newCell(rs.getObject(i+1)));
}
}
}
private static PdfPCell newHeaderCell(String value) {
return new PdfPCell(new Phrase(value));
}
private static PdfPCell newCell(Object value) {
return new PdfPCell(new Phrase(value == null ? "" : value.toString()));
}
public static void main(String[] args) throws Exception {
String sql = "SELECT Zug, Linie, Abfahrt, Ankunft, Von, Nach, Stationen FROM leistungen";
// ggf. noch WHERE-Klausel mit Parametern
// dann müssen diese unten gesetzt werden (aktuell auskommentiert)
try(Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test", "mihe7", "test");
PreparedStatement stmt = conn.prepareStatement(sql)) {
// Parameter setzen:
// stmt.setXXX(column, param);
try (ResultSet rs = stmt.executeQuery()) {
createPdf("test.pdf", rs);
}
}
}
}
Ach vergiss es, baust ja ein batch auf ... falsch geschaut.Ähnlich, die Schleife setzt nur die Parameter des Prepared Statement, der Aufruf ist außerhalb der Schleife. Da ist dann doch klar, dass nur ein Wert geschrieben wird.
Ich würde in der Schleife des PreparedStatement aufbauen und ausführen. Evtl der Übersicht halber in einer eigenen Funktion. Dank Connection Pooling kann sogar das holen der Connection da mit drin sein.
try {
VON = von.getText();
BIS = bis.getText();
SimpleDateFormat sdf1 = new SimpleDateFormat("dd.MM.yyyy");
java.util.Date date1 = sdf1.parse(VON);
java.sql.Date sqlTag1 = new java.sql.Date(date1.getTime());
java.util.Date date2 = sdf1.parse(VON);
java.sql.Date sqlTag2 = new java.sql.Date(date2.getTime());
String insertTableSQL = "UPDATE leistungen"
+ " SET Baustelle = true,"
+ " Grund = '" + individuell.getText()
+ "', Beginnt = '" + (java.sql.Date)sqlTag1
+ "', Endet = '" + (java.sql.Date)sqlTag2
+ "', ZwischenA = '" + a.getText()
+ "', BisB = '" + b.getText()
+ "' WHERE Tage "
+ " BETWEEN '" + (java.sql.Date)sqlTag1
+ "' AND '" + (java.sql.Date)sqlTag2 + "'";
dbConnection = getDBConnection();
preparedStatement = dbConnection.prepareStatement(insertTableSQL);
preparedStatement.executeUpdate();
String insertTableSQL = "UPDATE leistungen"
+ "SET (Baustelle, Grund, Beginnt, Endet, ZwischenA, BisB) VALUES"
+ "(?,?,?,?,?,?)"
+ "WHERE Tage BETWEEN'" + (java.sql.Date)sqlTag1 + "' AND '" + (java.sql.Date)sqlTag2 + "'";
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)) {
dbConnection = getDBConnection();
preparedStatement = dbConnection.prepareStatement(insertTableSQL);
preparedStatement.setBoolean(1, true);
preparedStatement.setString(2, individuell.getText());
preparedStatement.setDate(3, (java.sql.Date)sqlTag1);
preparedStatement.setDate(4, (java.sql.Date)sqlTag2);
preparedStatement.setString(5, a.getText());
preparedStatement.setString(6, b.getText());
preparedStatement.addBatch();
}
preparedStatement.executeBatch();
// preparedStatement.executeUpdate();
System.out.println("Record is inserted into DBUSER table!");
String sql = "UPDATE leistungen"
+ "SET Baustelle=?, Grund=?, Beginnt=?, Endet=?, ZwischenA=?, BisB=? "
+ "WHERE Tage BETWEEN ? AND ?";
dbConnection = getDBConnection();
try(preparedStatement = dbConnection.prepareStatement(sql)) {
preparedStatement.setBoolean(1, true);
preparedStatement.setString(2, individuell.getText());
preparedStatement.setString(2, individuell.getText());
preparedStatement.setDate(3, (java.sql.Date)sqlTag1);
preparedStatement.setDate(4, (java.sql.Date)sqlTag2);
preparedStatement.setString(5, a.getText());
preparedStatement.setString(6, b.getText());
// es folgen die zwei BETWEEN-Parameter
preparedStatement.setDate(7, (java.sql.Date)sqlTag1);
preparedStatement.setDate(8, (java.sql.Date)sqlTag2);
preparedStatement.executeUpdate();
}