Zum Inhalt springen

SQL Datenbank Inserts einfügen


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

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

LG

Geschrieben

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

Geschrieben

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

Geschrieben

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).

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...