Brauche Hilfe bei meinem Programm !

Jeff123

Mitglied
Hallo Freunde,

Ich hab ein Problem bei meinem Programm wo ich überhaupt nicht mehr weiter komme , es geht darum ein java Programm zu entwickeln welches eine Verbindung zu "phpMyAdmin" erstellt und dabei in meiner vorhandenen Tabelle(Students) die Daten Sätze einträgt


Für die Verbindung benutze ich MAMP, die auch soweit steht da ich die Daten Sätze abfragen kann.

Das Programm läuft...

Ich kann die komplette Tabelle abfragen(Students).

Aber ich kann nichts einfügen. Woran liegt das ?




32407855ko.jpg


Java:
package jdbcstudent;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;


public class JdbcStudent {
  
  
  

    public static void main(String[] args) {
      
        PreparedStatement preparedStatement = null;
        ResultSet rs;
      
        String read = "Select * FROM students";
      
        try (Connection conn = dbUtil.getConnection();
                PreparedStatement pr = conn.prepareStatement(read);
                ){
            rs = pr.executeQuery();
          
            while(rs.next() ) {
              
            System.out.println(rs.getInt("id") +" "+ rs.getString("first_name") +" "+ rs.getString("last_name") +" "+ rs.getDate("dob"));
              
            }
        }catch (SQLException e){
            e.printStackTrace();
        }
 
        Scanner input = new Scanner(System.in);
      
      
        System.out.println("Do you want to add new Students ?");
        String ans = input.nextLine();
      
        if(ans.equalsIgnoreCase("yes"))
        {
            System.out.println("Enter ID: ");
            String id = input.nextLine();
          
            System.out.println("Enter First Name: ");
            String first_name = input.nextLine();
          
            System.out.println("Enter Last Name: ");
            String last_name = input.nextLine();
          
            System.out.println("Enter your Date of Birth: ");
            String dob = input.nextLine();
          
            addStudents create = new addStudents();
            create.add(id, first_name, last_name, dob);
          
        }else{
            System.exit(1);
        }
      
    }
  
  
}

Java:
package jdbcstudent;

import java.sql.Connection;
import java.sql.PreparedStatement;

public class addStudents {
  
    public addStudents() {
      
    }
  
    public void add(String id, String first_name, String last_name, String dob){
      
        String sql = "INSERT INTO `students` (`id`, `first_name`, `last_name`, `dob`)  VALUES (? , ? , ? , ?) ";
      
        try (Connection conn = dbUtil.getConnection();
                PreparedStatement stmt  = conn.prepareStatement(dob);
                ){
            stmt.setString(1, id);
            stmt.setString(2, first_name);
            stmt.setString(3, last_name);
            stmt.setString(4, dob);
          
          
            stmt.execute();
          
          
        }catch (Exception e){
          
        }
      
    }
          
  
}

Java:
package jdbcstudent;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


public class dbUtil
{
    private static final String USERNAME = "****";
    private static final String PASSWORD = "****";
    private static final String CONN = "jdbc:mysql://localhost/school"; // oder login anstatt dem school
    private static final String SCONN = "jdbc:sqlite:login.sqlite";
  
  
  



  

  
    public static Connection getConnection() throws SQLException{
      
        return DriverManager.getConnection(CONN, USERNAME, PASSWORD);
    }
}
 
In der Klasse "addStudents", Methode "add" solltest du die Exception auf keinen Fall verschlucken, sondern zumindest ausgeben.
Die Fehlermeldung sollte genau den Hinweis enthalten, den du brauchst.

Übrigens ist es üblich, Klassennamen mit großen Buchstaben anfangen zu lassen.
 
Danke für deine Antwort,

das Programm gibt mir keine Fehlermeldung aus, es läuft fehlerlos.

Ich bekomme meine Tabelle ausgegeben und kann auch anschließend einen neuen Studenten eingeben, aber dieser wird nicht übernommen in meiner Datenbank, ich weiß auch nicht wohin die Eingabe verschwindet.


Bin noch ein blutiger Anfänger 😉
 
Btw. (damit das korrekt gelernt wird) PhpMyAdmin ist eine Adminoberfläche für MySql. D.h. dein Java Programm versucht eine Verbindung zu MySql aufzubauen.
 
Ich habe versucht den "catch-Block" so zu verändern das ich irgendwie eine Ausgabe dazwischen schalten kann, bis jetzt aber erfolglos, und andere Ideen habe ich auch keine mehr.


Meine zweite Idee war das es an den Zugewiesenen rechten für meinen Benutzer liegen könnte in "phpMyAdmin".
Aber auch hier sind alle rechte komplett verteilt.
 
Ich habe versucht den "catch-Block" so zu verändern das ich irgendwie eine Ausgabe dazwischen schalten kann, bis jetzt aber erfolglos, und andere Ideen habe ich auch keine mehr.
Woran scheiterst du da ?
Es reicht, wenn du einfach "e.printStackTrace();" in the catch-Block reinschreibst. So wie du es in der Klasse "JdbcStudent" ja schon hast.

Es ist übrigens klar, dass du keine Fehlermeldung siehst. Der leere catch-Block verschluckt alles.

Bist du dir sicher, dass du im INSERT-Statement die Namen unter Apostroph setzen musst ?
 
Es reicht, wenn du einfach "e.printStackTrace();" in the catch-Block reinschreibst. So wie du es in der Klasse "JdbcStudent" ja schon hast

Nach dem ich die Veränderungen in meinem Code hinzugefügt habe , bekomme ich diese Fehlermeldung, mit der ich kaum etwas anfangen kann.
32417285in.jpg



Bist du dir sicher, dass du im INSERT-Statement die Namen unter Apostroph setzen musst ?

Ich hab es auch ohne Apostroph versucht, aber ohne Erfolg.
 
Hast du schon versucht in der Anweisung
Java:
PreparedStatement stmt  = conn.prepareStatement(dob);
statt dem "dob" die Variable "sql" einzusetzen ?
 
Poste doch den Code und den Stacktrace direkt, anstatt Screenshots davon zu.


In deinem sql-String fehlen ein paar `, kann aber auch an der Auflösung des Bildes liege...
 

Zurück
Oben