nilo Geschrieben 13. Januar 2014 Geschrieben 13. Januar 2014 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 Zitieren
nilo Geschrieben 14. Januar 2014 Autor Geschrieben 14. Januar 2014 Problem gelöst, hab den ganzen try block mit executeUpdate() nochmal reingemacht. Also einen für executeQuery() und einen für executeUpdate(). LG Zitieren
nilo Geschrieben 14. Januar 2014 Autor Geschrieben 14. Januar 2014 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 Zitieren
Goulasz Geschrieben 15. Januar 2014 Geschrieben 15. Januar 2014 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 Zitieren
hbspike Geschrieben 21. Januar 2014 Geschrieben 21. Januar 2014 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). Zitieren
Empfohlene Beiträge
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.