Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Nabend,

hab mal eine Frage zu meinem Code. Datenbank abfragen klappt soweit.

Jetzt ist die Frage wie ich Inserts in die Datenbank einfügen kann. Hab gelesen das es mit ResultSet nicht

gehen soll, weiss dann aber auch nicht weiter...kann jmd helfen?

LG

//Schritt 1. Importieren der benötigten Pakete

import java.sql.*;


public class Adressliste2 {

	//JDBC Treibername und Datenbank URL


   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  

   static final String DB_URL = "jdbc:mysql://localhost/adressen";


   //  Userdaten

   static final String USER = "root";

   static final String PASS = "123456";


   public static void main(String[] args) {

   Connection conn = null;

   Statement stmt = null;


   try{

      //Schritt 2: Den JDBC Treiber registrieren

      Class.forName("com.mysql.jdbc.Driver");


      //Schritt 3: Verbindung herstellen

      System.out.println("Verbindung zur Datenbank wird aufgebaut...");

      conn = DriverManager.getConnection(DB_URL,USER,PASS);


      /*//Schritt 4: Datenbankabfrage ausführen

      System.out.println("Abfrage erstellen...");

      Statement statement = conn.createStatement();

      String sqlabfrage;

      sqlabfrage = "Select * from adressliste";


       ResultSet rs = statement.executeQuery(sqlabfrage); 

      */

      // Datenbank ändern

      System.out.println("Inserts einfügen...");

      Statement statement = conn.createStatement();

      String sqlinsert;

      sqlinsert = "insert into adressliste values(3,'Jörg','Schulz','Abcweg',15,'Musterstadt',12345);";


      ResultSet rs = statement.executeUpdate(sqlinsert);



      //STEP 5: Daten aus der Abfrage extrahieren

      while(rs.next()){

         //Abfrage nach Spaltenname

         int idAdressliste  = rs.getInt("idAdressliste");

         String Vorname = rs.getString("Vorname");

         String Nachname = rs.getString("Nachname");

         String Straße = rs.getString("Straße");

         int Hausnummer = rs.getInt("Hausnummer");

         String Ort = rs.getString("Ort");

         int PLZ = rs.getInt("PLZ");


         //Ergebnisse anzeigen lassen

         System.out.print("id: " + idAdressliste);

         System.out.print(", Vorname: " + Vorname);

         System.out.print(", Nachname: " + Nachname);

         System.out.print(", Straße: " + Straße);

         System.out.print(", Hausnummer: " + Hausnummer);

         System.out.print(", Ort: " + Ort);

         System.out.println(", PLZ: " + PLZ);

      }

      //Schritt 6: Verbindungen schliessen

      rs.close();

      statement.close();

      conn.close();


   }catch(SQLException se){

      //JDBC Fehlermeldungen

      se.printStackTrace();


   }catch(Exception e){

      //Fehlermeldungen von Class.forName

      e.printStackTrace();


   }finally{

      //finally block used to close resources

      try{

         if(stmt!=null)

            stmt.close();

      }catch(SQLException se2){

      }

      try{

         if(conn!=null)

            conn.close();

      }catch(SQLException se){

         se.printStackTrace();

      }

   }//ende try

   System.out.println("Goodbye!");

}//main

}//Adressliste2

  • Autor

Problem gelöst, hab den ganzen try block mit executeUpdate() nochmal reingemacht.

Also einen für executeQuery() und einen für executeUpdate().

LG

  • Autor

Nächste Frage,

ist es möglich das ich für jeden typ (Abfrage und Insert) eine einzelne Methode erstelle?

Komm da nicht weiter, bzw weiss nicht welchen return type ich wählen muss...

LG

Verstehe nicht so ganz, was du meinst.

Ein SELECT gibt in der Regel ein ResultSet oder einen vergleichbaren, tabellarisch anmutenden Datentyp zurück.

Ein INSERT, UPDATE, DELETE gibt in der Regel nur ein Boolean zurück, ob die Operation erfolgreich war. Ggfs. einen Integer über die Anzahl der veränderten Rows, aber das ist mir bisher noch nicht untergekommen.

Gruß, Goulasz

Auch denke bei INSERTs, sollten da Usereingaben drinnen sein, an die Möglichkeit der SQL-Injection. Hierbei können dir z.B. PreparedStatements schon Arbeit abnehmen.

Dein SQL würde dann ca so lauten :

PreparedStatement ps = connection.prepareStatement(

    "INSERT INTO test VALUES(?,?,?)"//  wobei die ? die Anzahl der Spalten angeben. 

);

ps.setString(1, "Test1"); // Parameter werden übergeben

ps.setInt(2, 0); // Parameter werden übergeben

ps.setString(3, "Test2"); // Parameter werden übergeben

ResultSet rs = ps.executeQuery(); //Statement wird ausgeführt.

Und natürlich kannst du zwei Funktionen erstellen, welche unterschiedliche SQL-Statements abfeuern. Du musst dann nur selbst dafür sorgen wann du welche Funktion mit welchen Parametern aufrufst(sofern ich dich richtig verstanden habe).

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.