Announcement

Collapse
No announcement yet.

String[] in Datenbank schreiben ?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • String[] in Datenbank schreiben ?

    Hallo

    Ich habe eine String[] listeStationen, die ich gerne in eine Datenbank Tabelle speichern möchte.

    Es scheitert allerdings an diesem Ausdruck. Wie kann ich das lösen?

    CODE]
    preparedStatement.setString(18, listeStationen);
    [/CODE]

    Ganzer Code:

    Code:
    package Database;
    
    import java.sql.DriverManager;
    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.text.ParseException;
    
    
    public class DBWriter extends Editor {
    
    
    
    private static final String DB_DRIVER = "***********";
    private static final String DB_CONNECTION = "**********";
    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"
    + "(Leistung, Datum, 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()).getTi me());
    Time time2 = new Time(dateFormat.parse(txtnAnkunft.getText()).getTi me());
    
    
    
    String text9 = txtnLeistung.getText();
    int Leistung = Integer.parseInt(text9);
    
    
    
    dbConnection = getDBConnection();
    preparedStatement = dbConnection.prepareStatement(insertTableSQL);
    
    preparedStatement.setInt(1, Leistung);
    preparedStatement.setDate(2, (java.sql.Date) sqlStartDate);
    preparedStatement.setDate(3, (java.sql.Date) sqlEndDate);
    preparedStatement.setInt(4, mo);
    preparedStatement.setInt(5, di);
    preparedStatement.setInt(6, mi);
    preparedStatement.setInt(7, DO);
    preparedStatement.setInt(8, fr);
    preparedStatement.setInt(9, sa);
    preparedStatement.setInt(10, so);
    preparedStatement.setInt(11, ft);
    preparedStatement.setString(12, txtnZug.getText());
    preparedStatement.setString(13, txtnLinie.getText());
    preparedStatement.setTime(14, time1);
    preparedStatement.setTime(15, time2);
    preparedStatement.setString(16, txtnStart.getText());
    preparedStatement.setString(17, txtnEnde.getText());
    preparedStatement.setString(18, listeStationen);
    preparedStatement.executeUpdate();
    // preparedStatement.close();
    
    
    
    // execute insert SQL stetement
    preparedStatement.executeUpdate();
    
    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());
    
    }
    
    }

  • #2
    https://docs.oracle.com/javase/7/doc...Statement.html

    setArray

    https://stackoverflow.com/questions/...ment-parameter
    Christian

    Comment


    • #3
      Wenn ich das mache, meckert er in der Klasse wo ich die Daten eingebe

      Code:
      listeStationen = txtnStations.getText().split("\n");
      mit "can not converte from String[] to Array"

      Comment


      • #4
        Das würde bedeuten txtnStations.getText() ist ein Array
        Was ist listeStationen?
        Wieso kommt ein Fehler bei der Eingabe, die wohl vor dem speichern ist?
        Christian

        Comment


        • #5
          static Array listeStationen;

          txtnStations = new JTextArea();

          listeStationen = txtnStations.getText().split("\n");

          Comment


          • #6
            static Array listeStationen; -> ?

            String[] listeStationen;

            listeStationen=txtnStations.getText().split("\n");

            ....
            //speichern
            Array array = conn.createArrayOf("VARCHAR",listeStationen);
            pstmt.setArray(1, array);

            Warum wird nicht der komplette String insgesamt gespeichert.
            Datenbankseitig ist kein Zugriff auf einzelne Elemente des Strings möglich.
            Also String komplett rein, komplett lesen aus der DB und dann ggf. splitten
            Es ist ohnehin egal, da das Array in ein VARCHAR geschrieben wird. Das Ergebnis ist dasselbe
            Zuletzt editiert von Christian Marquardt; 19.04.2019, 21:09.
            Christian

            Comment

            Working...
            X