PostgreSQL Werte auf Eingabe speichern

pg1337

Bekanntes Mitglied
Hallo,

habe mir überlegt, mit einer Methode:

Java:
 public void save(Country country) {
   }

eine Stadt, die ich in der Main eingebe in ner Tabelle in meiner Datenbank mit den Werten name, population, area zu speichern.

Habe das jetzt mal soweit:

Java:
 public void save(Country country) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException {
	   List<City> cityList= new ArrayList<City>();
	   Connection conn= getConnection();
	   stmt= conn.createStatement();
	   ResultSet rst2= stmt.executeQuery("");
   }


Wie gehe ich bei dem INSERT INTO befehl vor?

Java:
ResultSet rst2= stmt.executeQuery("INSERT INTO cities(name, population, area) VALUES(?); ");

Gruß & danke : )
 
S

SlaterB

Gast
danke auch für den Hinweis per PM auf dieses Thema ;)

keine Beispiele, SQL-Grundlagen angeschaut und was immer nach allgemeiner Erfahrung vorher sonst noch nützlich wäre?
Java JDBC Insert Example - How to insert data into a SQL table | Java Statement | devdaily.com
INSERT INTO erfordert zweifelsfrei executeUpdate statt executeQuery, es gibt kein ResultSet,

aber mit kaputten SQL bist du eh noch nicht soweit,
wenn du drei Spalten angibst, (name, population, area), dann brauchst du doch auch drei ?-Parameter?
? gibts übrigens nur bei PreparedStatement, dass du darauf aus bist ist etwas positives,
mein erste Link enthält nur einfache Statements, nicht so gut,
Java JDBC Prepared Statements Example

hast du denn überhaupt schon etwas ausprobiert, erhälst du Fehlermeldung oder fragst du gleich im Forum?
arbeiten arbeiten arbeiten, nicht nur fragen
 

pg1337

Bekanntes Mitglied
Danke für den Link, lese mir das mal durch!:)

Habe mir schon was überlegt.. aber eher auf papier wie der "Algorithmus" aussehen sollte.
 

pg1337

Bekanntes Mitglied
Java:
   public void save(Country country) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException {
	 
	   Connection conn= getConnection();
	   stmt= conn.createStatement();
	   PreparedStatement pstmt= conn.prepareStatement("INSERT INTO cities(name, population, groesse) VALUES('name', population,area)");
	   pstmt.executeQuery();
	   	   
   }

muss ich da dann pstmt.executeQuery() machen oder wie? Query gibt ja eig kein Sinn oder täusch ich mich da?
Wie muss ich das PreparedStatement dann ausführen?


Gruß

p.s groesse in der Tabelle = area
 
S

SlaterB

Gast
> muss ich da dann pstmt.executeQuery() machen oder wie?
immer noch: zum einen stehen im Link Beispiele, zum anderen kannst du es doch ausprobieren?

> INSERT INTO cities(name, population, groesse) VALUES('name', population,area)
ist kein sauberes SQL, alle Werte müssen in Anführungszeichen stehen oder Zahlen oder SQL-Funktionen sein,
Variablennamen direkt im String werden nicht magisch ersetzt..

bei PreparedStatement geht es doch um ? und spätere Übergabe der Parameter, alles in ausführlichen Beispielen zu sehen
 

pg1337

Bekanntes Mitglied
Java:
String name;
int population, area;

PreparedStatement pstmt= conn.prepareStatement("INSERT INTO cities(name, population, groesse) VALUES(name, population, area)");
	   pstmt.executeQuery();

Wo lege ich nachher die 3 Dinge fest, dass sie übergeben werden?
 
S

SlaterB

Gast
weiterhin verweise ich auf den Link, suche ein beliebiges 'PreparedStatement' dort und alles ist so sonnenklar,

wie ich gerade sehe musst du nichtmal in den Code gehen, am Anfang im Text steht extra groß und breit ein Beispiel..
An example of a PreparedStatement object is

PreparedStatement pstmt = con.prepareStatement("update Orders set pname = ? where Prod_Id = ?");
pstmt.setInt(2, 100);
pstmt.setString(1, "Bob");
pstmt.executeUpdate();
was könnte dort nicht in Sekunden von selber klar sein?
 

pg1337

Bekanntes Mitglied
Verstehe das nicht ganz.. so?:

Java:
Connection conn= getConnection();
	   stmt= conn.createStatement();
	   PreparedStatement pstmt= conn.prepareStatement("INSERT INTO cities(name, population, groesse) VALUES(name=?, population=?,area=?");
	   pstmt.setString(1, "Antalia");
	   pstmt.setInt(2, 80);
	   pstmt.setInt(3, 90);
	   pstmt.executeQuery();

pg1337
 

pg1337

Bekanntes Mitglied
Got it:

Java:
  public void save(Country country) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException {
	 

	   Connection conn= getConnection();
	   stmt= conn.createStatement();
	   PreparedStatement pstmt= conn.prepareStatement("INSERT INTO cities(name, population, groesse) VALUES(?,?,?)");
	   pstmt.setString(1, "Antalia");
	   pstmt.setInt(2, 80);
	   pstmt.setInt(3, 90);
	   pstmt.executeQuery();
	   	   
   }

Nun möchte ich diese Werte: 'Antalia', 80, 90 in einem Country e= new Country(); abspeichern.
Dazu benötige ich doch nun einen Konstruktor, der sagt public Country(String name, int population, int area) oder?

Gruß
 

pg1337

Bekanntes Mitglied
So, habe nochmals eine Frage:

Habe das jetzt soweit:

Java:
 public void save(Country country) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException {
	 

	   Connection conn= getConnection();
	   stmt= conn.createStatement();
	   PreparedStatement pstmt= conn.prepareStatement("INSERT INTO land(id, name, population, groesse) VALUES(?,?,?,?)");
	   pstmt.setInt(1, country.getId());
	   pstmt.setString(2, country.getName());
	   pstmt.setInt(3, country.getPopulation());
	   pstmt.setDouble(4, country.getArea());
	   pstmt.executeUpdate();
	   System.out.println("erfolgreich eingefügt!");
	   
   }

das steht in der Methode. In der Main Methode steht das hier:

Java:
 public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException{
	  
	   
	   
	   Country e= new Country(6,"Griechenland", 50, 60);
	   e.getCityList().add(new City("Athen", 90, 60));
       e.getCityList().add(new City("Pompei", 90, 60));
	   Uebung d = new Uebung();
	   d.save(e);
   }       
}

Frage: Wie mache ich das jetzt, dass diese CityList interiert wird und die Werte in der anderen Tabelle cities eingefügt werden? Bisher wird nur das Objekt e in die Tabelle land eingefügt, möchte aber dass die Cities aus der cityList auch in die Tabelle cities aufgenommen werden.


Hatte das so versucht:

Java:
PreparedStatement pstmt2=conn.prepareStatement("INSERT INTO cities(name, population, groesse) VALUES(?,?,?)");
pstmt2.setString(1,country.getName());
pstmt2.setInt(2,country.getPopulation());
pstmt2.setDouble(3,country.getArea());	   
pstmt2.executeUpdate();

aber dann wird in meine Tabelle cities nur nochmals das Land Griechenland gespeichert, und nicht meine 2 Städte aus der CityList.

Gruß & Danke : )
 
S

SlaterB

Gast
> Wie mache ich das jetzt, dass diese CityList interiert wird
mit einer Schleife über die Citys und eben ein passendes Insert
 

pg1337

Bekanntes Mitglied
Wie meinst das mit der Schleife über cities?
Verstehe das iterieren noch nicht 100%.

Wie geht das ohne ein ResultSet?
Mit ner erweiterten for schleife?
 
Zuletzt bearbeitet:
S

SlaterB

Gast
eine Liste kann man mit einer Schleife durchlaufen, das ist absolute Grundlage und hat erstmal nichts mit DB zu tun,

steht in jedem Lehrbuch als essentielles Kapitel ganz am Anfang, Monate vor JDBC,
oder wie immer auch in Suchmaschinen zu finden: 'java Liste for Schleife'
How to loop / iterate a List in Java

welche der verschiedenen Schleifen du nimmst ist reichlich egal
 

pg1337

Bekanntes Mitglied
Java:
for (City cityList : country.getCityList()) {
		   pstmt= conn.prepareStatement("INSERT INTO cities(name, population, groesse, country_id) VALUES(?,?,?,?)");  
		   pstmt.setString(1,cityList.getName());
		   pstmt.setInt(2, cityList.getPopulation());
		   pstmt.setDouble(3, cityList.getArea());
		   pstmt.setInt(4, cityList.getId());
		   pstmt.executeUpdate();
		   System.out.println("erfolgreich eingefügt!");
	   }


habs :) funktioniert!
 

pg1337

Bekanntes Mitglied
eine Liste kann man mit einer Schleife durchlaufen, das ist absolute Grundlage und hat erstmal nichts mit DB zu tun,

steht in jedem Lehrbuch als essentielles Kapitel ganz am Anfang, Monate vor JDBC,
oder wie immer auch in Suchmaschinen zu finden: 'java Liste for Schleife'
How to loop / iterate a List in Java

welche der verschiedenen Schleifen du nimmst ist reichlich egal


Danke trotzdem für den Link, habs durch probieren grade hingekriegt.
Werde mir den Link trotzdem durchlesen!
 

pg1337

Bekanntes Mitglied
Habs jetzt auf 2 Weisen gemacht:

1)
Java:
for (City cityList : country.getCityList()) {
	   pstmt= conn.prepareStatement("INSERT INTO cities(name, population, groesse, country_id) VALUES(?,?,?,?)");  
	   pstmt.setString(1,cityList.getName());
	   pstmt.setInt(2, cityList.getPopulation());
	   pstmt.setDouble(3, cityList.getArea());
	   pstmt.setInt(4, cityList.getId());
	   pstmt.executeUpdate();
	   System.out.println("erfolgreich eingefügt!");
   }


2)
Java:
	   Iterator<City> iterator= country.getCityList().iterator();
	   while(iterator.hasNext()){
		   City c=iterator.next();
		   pstmt= conn.prepareStatement("INSERT INTO cities(name, population, groesse, country_id) VALUES(?,?,?,?)");  
		   pstmt.setString(1,c.getName());
		   pstmt.setInt(2, c.getPopulation());
		   pstmt.setDouble(3, c.getArea());
		   pstmt.setInt(4, c.getId());
		   pstmt.executeUpdate();
		   System.out.println("erfolgreich eingefügt!");


Nun wollte ich das noch so machen:

3)
Java:
   for (int i=0; i<country.getCityList().size();i++){
	   
	   pstmt= conn.prepareStatement("INSERT INTO cities(name, population, groesse, country_id) VALUES(?,?,?,?)");  
	   pstmt.setString(1,country.getName());
	   pstmt.setInt(2, country.getPopulation());
	   pstmt.setDouble(3, country.getArea());
	   pstmt.setInt(4, country.getId());
	   pstmt.executeUpdate();
	   System.out.println("erfolgreich eingefügt!"); 
      }

Allerdings funktioniert das nicht, da das Land irgendwie 2mal versucht in die Tabelle übernommen zu werden.. (Exception wegen doppelter ID dann).

Wäre nett, wenn mir jmd sagen könnte was ich da vergessen habe.

Gruß :)
 
S

SlaterB

Gast
cityList bei 1) ist ein ungünstiger Variablenname..

ist es bei 3) nicht direkt erkennbar, dass du dort mehrfach die Country-Daten speicherst, die einzelnen Städte überhaupt nicht mehr beteiligt sind?
 

pg1337

Bekanntes Mitglied
Java:
 for (int i=0; i<country.getCityList().size();i++){
		   
		   pstmt= conn.prepareStatement("INSERT INTO cities(name, population, groesse, country_id) VALUES(?,?,?,?)");  
		   City c= country.getCityList().get(i);
		   pstmt.setString(1,c.getName());
		   pstmt.setInt(2, c.getPopulation());
		   pstmt.setDouble(3, c.getArea());
		   pstmt.setInt(4, country.getId());
		   pstmt.executeUpdate();
		   System.out.println("erfolgreich eingefügt!"); 
	      }

ok so müsste es stimmen : )


edit: bis auf den Variablenname
 

Michael...

Top Contributor
Java:
 for (int i=0; i<country.getCityList().size();i++){
		   
		   pstmt= conn.prepareStatement("INSERT INTO cities(name, population, groesse, country_id) VALUES(?,?,?,?)");  
		   City c= country.getCityList().get(i);
		   pstmt.setString(1,c.getName());
		   pstmt.setInt(2, c.getPopulation());
		   pstmt.setDouble(3, c.getArea());
		   pstmt.setInt(4, country.getId());
		   pstmt.executeUpdate();
		   System.out.println("erfolgreich eingefügt!"); 
	      }

ok so müsste es stimmen : )


edit: bis auf den Variablenname
Ein Vorteil von PreparedStatements ist, dass man sie wieder verwenden kann. Daher bitte das PreparedStatement wenigsten ausserhalb der Schleife erzeugen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Ataria SQLite Werte aus zwei Tabellen zusammenführen Datenbankprogrammierung 8
J Mehrere WHERE Werte benutzen Datenbankprogrammierung 2
P Null Werte bei der Normalisierung Datenbankprogrammierung 2
J keine Werte vom PHP Datenbankprogrammierung 3
Dimax MySQL 10 höchsten Werte aus einer Tabelle ermitteln Datenbankprogrammierung 30
L Java- Zähle alle Werte aus der Tabelle von aktiver Zelle Datenbankprogrammierung 12
MaxG. Datenbank werte vergleichen Datenbankprogrammierung 5
E Wie kann man in DB2 TIMESTAMP Werte hinzufügen? Datenbankprogrammierung 2
OnDemand SQL Query Anzahl der Werte Datenbankprogrammierung 8
ruutaiokwu sql server werte swappen beim update-vorgang mit unique-constraints..? Datenbankprogrammierung 2
S MySQL Nach wiederholtem Update falsche Werte (im Speicher?) Datenbankprogrammierung 1
L Werte in Datei speichern Datenbankprogrammierung 16
H MySQL Werte eines Datensatzes in einen anderen kopieren Datenbankprogrammierung 2
J Access Datenbank mit JAVA erstellen - boolean Werte Datenbankprogrammierung 4
E Werte auslesen Datenbankprogrammierung 3
D Alle Werte aus DB auslesen und in Chart darstellen Datenbankprogrammierung 6
Z MySQL werte von formular speichern Datenbankprogrammierung 3
S Werte aus Datenbank auslesen und in eine bestimmte Excelzelle eintragen Datenbankprogrammierung 2
E Update DB; Werte aus Feldern übernehmen Datenbankprogrammierung 5
N Zwei Spalten und Ihre Werte vergleichen Datenbankprogrammierung 3
J SQL Abfrage: Verschiedene Werte in einer Spalte mit einem Update Befehl? Datenbankprogrammierung 7
D Werte mit java programm in eine Datenbank einlesen Datenbankprogrammierung 7
Landei Mehre Werte für einen Prepared-Statement_Parameter übergeben? Datenbankprogrammierung 3
G Einheitliches Casting für Decimal und Integer-Werte Datenbankprogrammierung 5
G Werte in DB multiplizieren Datenbankprogrammierung 5
A JList nimmt nicht alle Werte aus der DB auf Datenbankprogrammierung 3
Y Hibernate - Werte aus 2 Tabellen laden Datenbankprogrammierung 29
G Hilfe: Werte sind alle x2 (oder mehr) nach JOIN Datenbankprogrammierung 13
F JDBC Abfrage Werte auslesen Datenbankprogrammierung 2
E Vergleichen von datetime mit GregorianCalender-Werte Datenbankprogrammierung 6
K [hibernate] show_sql: Werte der Parameter anzeigen Datenbankprogrammierung 3
P MYSQL werte aus liste auslesen und anderen damit updaten Datenbankprogrammierung 4
G numerische werte Datenbankprogrammierung 6
V Werte über Konsole in Datenbank schreiben Datenbankprogrammierung 2
L JTextfield Eingabe an DB übergeben Datenbankprogrammierung 5
S MySQL Datenbankabfrage mit Eingabe aus Textfeld vergleichen Datenbankprogrammierung 4
D MySQL Eingabe wird nicht übernommen... Datenbankprogrammierung 11
R Fehler in der Eingabe? Datenbankprogrammierung 3
G SQL Injection - Wie Eingabe filter? Datenbankprogrammierung 3
G textfeld eingabe nicht in den SQL befehl einbinden Datenbankprogrammierung 14
P Primärschlüssel direkt nach der Eingabe wieder auslesen Datenbankprogrammierung 7
S Problem bei Eingabe von Dateipfad in eine MySQL-Datenbank Datenbankprogrammierung 4
R Mongodb Daten in einem bestimmten Document speichern Datenbankprogrammierung 1
OnDemand Externe IDs speichern - Tabellenaufbau Datenbankprogrammierung 8
OnDemand Spring Boot Speichern in Threads Datenbankprogrammierung 6
D Daten aus der Firebase-Echtzeitdatenbank abfragen und in Variablen speichern (JAVA) Datenbankprogrammierung 0
D MYSQL goorm IDE - Wie speichern? Datenbankprogrammierung 0
T Java Spiel Daten speichern Datenbankprogrammierung 1
S Sets speichern Datenbankprogrammierung 2
S MongoDB - Abfrageergebnis in Array speichern Datenbankprogrammierung 2
B Denkanstoß bei Abschreibungstabelle in DB speichern Datenbankprogrammierung 0
temi Wie kann ich "Class" in einer DB speichern? Datenbankprogrammierung 2
Danloc Informationen für Datenbankverbindung wo/wie speichern? Datenbankprogrammierung 11
D foreignkey abfragen und speichern Datenbankprogrammierung 74
F Java Objekte in einer Datenbank speichern Datenbankprogrammierung 4
L HSQLDB Bilder in der DB speichern? Datenbankprogrammierung 6
perlenfischer1984 Java Objecte speichern mit Hibernate ? Datenbankprogrammierung 2
M byte-Array in Datenbank speichern Datenbankprogrammierung 2
I SQLite Objekt speichern einer Serialisierter Klasse Datenbankprogrammierung 1
J Dateien in MySQL speichern & indizieren Datenbankprogrammierung 2
Androbin [Serializing] Mehrere Objekte in einer einzigen Datei speichern Datenbankprogrammierung 1
S CSV File in Datenbank speichern!? Datenbankprogrammierung 1
E MySQL Große Datenmengen reibungslos speichern für Gameserver Datenbankprogrammierung 6
M MySQL Einzelne Systeminformationen speichern Datenbankprogrammierung 2
AMStyles Kann Wert nicht speichern (MAX VALUE) Datenbankprogrammierung 9
H MySQL Datenbank-Settings speichern Datenbankprogrammierung 10
5 Image in Datenbank speichern Datenbankprogrammierung 11
Kenan89 Oracle Daten einer Tabelle in Array speichern Oracle Datenbankprogrammierung 10
B Feld in einer @Entity als Text speichern Datenbankprogrammierung 5
D MySQL Bild aus DB auslesen und auf FTP Speichern Datenbankprogrammierung 7
G Oracle Speichern der Reihenfolge Datenbankprogrammierung 2
I SQL_Abfrage-Ergebnis (ResultSet) in String[] speichern Datenbankprogrammierung 29
X Connection schließen oder speichern? Performance Frage Datenbankprogrammierung 7
S Verschiedene Informationen gleichen Typs speichern und auslesen Datenbankprogrammierung 4
T Derby/JavaDB byte[] in Datenbank speichern [JPA] Datenbankprogrammierung 10
D Hibernate: ArrayList in DB speichern und auslesen Datenbankprogrammierung 4
G Lange Texte in der DB speichern Datenbankprogrammierung 3
S Textur in DB speichern Datenbankprogrammierung 7
J MySQL Hibernate: Probleme beim Speichern von OneToMany - Datensätzen Datenbankprogrammierung 2
K PostgreSQL PDF-Dateien in Datenbank speichern und auslesen Datenbankprogrammierung 4
B Japanische Zeichen in MSSQL-DB speichern Datenbankprogrammierung 2
H Datenbank in Datei speichern / laden Datenbankprogrammierung 8
M Problem Array in BLOB-Feld in DerbyDB zu speichern Datenbankprogrammierung 5
R Tabelle Updaten aber auch Speichern Datenbankprogrammierung 2
S Hibernate subtabellen speichern Datenbankprogrammierung 2
T Designfrage: DB-Daten direkt oder verzögert speichern Datenbankprogrammierung 2
Dragonfire Daten aus jsp Datei in datenbank speichern Datenbankprogrammierung 15
O vernümpftig Datumsangabe in mySQL DB speichern und auslesen Datenbankprogrammierung 4
T Daten aus DB in variable Zahl an Variablen speichern Datenbankprogrammierung 18
C MP3 in DB als Blob, wieder auslesen und als MP3 speichern??? Datenbankprogrammierung 8
N Sortierte Liste in Datenbank speichern? Datenbankprogrammierung 3
S BLOB in Datei speichern Datenbankprogrammierung 8
M Gelöst: JavaDB - Derby Inhalt in Jar Datei speichern Datenbankprogrammierung 5
A EMails in JavaDB speichern Datenbankprogrammierung 4
S Hibernate Blob mit Stream speichern Datenbankprogrammierung 3
D Datum vor 1756 speichern Datenbankprogrammierung 2
W XML Klasse in Datenbank speichern? Datenbankprogrammierung 5
H Text formatiert in MySQL DB speichern? Datenbankprogrammierung 3
O Vector als Blob in Oracle Datenbank speichern Datenbankprogrammierung 3
S Bilder in DB speichern oder lieber doch im Filesystem? Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben