Probleme mit INSERT Befehl

shitake83

Mitglied
Hi Leute,

ich möchte einen INSERT machen aber ich weiss nicht wieso er die DB nicht updated bzw. den INSERT nicht durchführt.
Habe gedebugged und alle Werte die für den INSERT wichtig sind,sind vorhanden. Es kann also nur an meiner Insert Geschichte liegen

Das is das Statement was nicht funktioniert (einfach mal mit dummy daten;hat aber nicht geklappt):
Code:
  stamt.addBatch("INSERT INTO bs_verz_gc VALUES (1,2,3,4,5,6,7,8,9,10)");

Normalerweise sollte ich doch jetzt eine extra Zeile in der Tabelle bs_verz_gc haben oder ?? Hab ich aber net ;(


bzw. hier das "echte" Statement:

Code:
String sql = "INSERT INTO bs_verz_gc " 
    		  + "(bs_nr,kv,plz,ort,strasse,lat,lng,loaddate,gcdate,flag)" 
    		  + "VALUES('" + dbSet[0] +"','" + dbSet[1] +"','" + dbSet[2] +"','" + dbSet[3] +"','" + dbSet[4] +"','" + dbSet[5] +"','" + dbSet[6] +"','" + dbSet[7] +"','" + dbSet[8] +"','" + dbSet[9] +"');";

stamt.addBatch(sql);


Hier nochmal der Code von meinem gesamten Programm
p.s.: kommentare die euch verwirren ignorieren, es sind wahrscheinlich alte oder welche die schon weg sind^^

Java:
import java.sql.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.*;
import java.util.Date;

//Das split[2] & [3] müssen aus der Methode bei jeder Abfrage rausgeechot und iwie gespeichert werden.
//um dann mit der setGeoToDB in die DB gespeichert zu werden.

/**
 * Diese Klasse stellt eine JDBC Verbindung zu einer PostgreSQL DB her,
 * holt sich PLZ Daten, schickt sie gegen GoogleMaps
 * und erhält als Ergebnis, Latitude und Longitude der PLZ,
 * die wiederum in die Datenbank zurückgespeichert wird
 *
 * @author      
 * @version     1.0 November 2010                                
 *                                  
 */

public class DbConnect {


 /**
     * Stellt die Datenbank Verbindung her
     *
     * @param e Exception Handler
     * @param connection JDBC Connection Handler
     * @param url JDBC Connection URL
     * @param stmt SQL Statement
     * @param rs SQL Statement -> Result
     *
     */

      public static void DbConn() throws Exception{
                   
          try {
            Class.forName("org.postgresql.Driver");
     
          } catch (ClassNotFoundException e) {
            System.out.println("Hasse keinen JDBC Treiber? Hau den ma in deinen library path!");
            e.printStackTrace();
            return;
          }
     //Meldung das der Treiber geht
     
          Connection connection = null;
     
          try {

             String url = "jdbc:postgresql://server:port/datenbank";
             
             connection = DriverManager.getConnection(url,"postgres", "postgres");
     
             Statement stmt = connection.createStatement();
             ResultSet rs;
            
             rs = stmt.executeQuery("SELECT * FROM test LIMIT 10");
            
             while ( rs.next() ) {
             
                 String bs_nr = rs.getString("bs_nr");
                 String kv = rs.getString("kv");
                 String plz = rs.getString("plz");
                 String ort = rs.getString("ort");
                 String strasse = rs.getString("strasse");
                 String lat = "0";
                 String lng = "0";
                 
                 String loaddate = String.valueOf(System.currentTimeMillis());

                 
                 String gcdate = String.valueOf(System.currentTimeMillis());
                 String flag = "0";
                 
                 
                 String[] dbSet = {bs_nr,kv,plz,ort,strasse,lat,lng,loaddate,gcdate,flag};

                 printUrlContent("http://maps.google.com/maps/geo?q=" + plz + "&output=csv",dbSet);                   
             }
             connection.close();
     
          } catch (SQLException e) {
            System.out.println("Connection Failed! Check output console");
            e.printStackTrace();
            return;
          }
     
          if (connection != null)
              System.out.println("Endlich feddich!!!");
          else
                  System.out.println("Keine Verbindung am stizzen!");
          }
   
    /**
     * Holt die CSV von GoogleMaps
     *
     * @param urlString Die auszugebende URL
     * @param dbSet Datensatz als Array aus der DB
     *      
     * @param con URLConnection Handle
     * @param reader buffered reader
     * @param line Aktuelle Reihe der Abfrage
     *
     */   
     
      public static void printUrlContent(String urlString, String[] dbSet) throws Exception {
             URLConnection con = new URL(urlString).openConnection();
             con.connect();
             BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
             String line = null;
            
             while ((line = reader.readLine()) != null) {
               
                 final String[] split = line.split(",");
                 
                 //Ausgabe der lat/lng werte
                 
                 //check ob dbSet ankommt
                 
                 dbSet[5] = split[2];	//lat ins DB Array laden
                 dbSet[6] = split[3];	//lng ins DB Array laden
                 
                 System.out.println(dbSet[5] +" Testzeile" + "\n");
                 
                 //lat
                 System.out.println(split[2] + "Test:Lat");
                 
                 //lng
                 System.out.println(split[3] + "Test:Lng");
                 //nochmal ausgabe der line
                 System.out.println(line + "Test: Komplette Line");
    
                 //dbSet[0-7] oder was auch immer an die db schicken
                 setDataToDB(dbSet); //alt
                 //setDataToDB(dbSet); //neu
                                                                           
             }                     
       }
         
           
      //Lat/Lng in die DB schreiben
public static void setDataToDB(String[] dbSet){
      
      
       Connection connection = null;
       String url = "jdbc:postgresql://server:port/datenbank";
             
       try {
		connection = DriverManager.getConnection(url,"user", "passwort");
	} catch (SQLException e1) {
		// TODO Auto-generated catch block
		e1.printStackTrace();
	}
       
        //Statement stamt = connection.createStatement();
       //ResultSet rst;
       Statement stamt = null;
    try {
    
      stamt = connection.createStatement();

      /*String sql = "INSERT INTO bs_verz_gc " 
    		  + "(bs_nr,kv,plz,ort,strasse,lat,lng,loaddate,gcdate,flag)" 
    		  + "VALUES('" + dbSet[0] +"','" + dbSet[1] +"','" + dbSet[2] +"','" + dbSet[3] +"','" + dbSet[4] +"','" + dbSet[5] +"','" + dbSet[6] +"','" + dbSet[7] +"','" + dbSet[8] +"','" + dbSet[9] +"');";
      
      */
      stamt.addBatch("INSERT INTO bs_verz_gc VALUES (1,2,3,4,5,6,7,8,9,10) where bs_nr =1");
  
    		      

      connection.close();           
} catch (SQLException e) {
    System.out.println("Connection Failed! Check output console");
    e.printStackTrace();
    return;
  }
}
    
       
  public static void main(String[] argv) throws Exception{
     
     
      //PROXY SETTINGS : Damit Google die Daten zurückschickt
      //                 MUSS!! eingestellt sein, da sonst timeout
      Properties properties = System.getProperties();
      properties.put("http.proxyHost", "xxx.xxx.xxx.xxx");
      properties.put("http.proxyPort", "8080");
     

      //printUrlContent("http://maps.google.com/maps/geo?q=5310&output=csv");
      DbConn();          
     
  }  
  
 }
 

XHelp

Top Contributor
Auszug aus der API:
addBatch
Adds the given SQL command to the current list of commmands for this Statement object. The commands in this list can be executed as a batch by calling the method executeBatch.

Ansonsten gibt es noch executeUpdate...
 

preachie

Aktives Mitglied
Ich kenne mich jetzt nicht mit Postgres aus, aber ich vermute mal, dort ist es so wie in anderen DBMS, dass die Datentypen schon stimmen müssen.

In Deinem Dummy Statement übergibst Du alle Werte als int, in dem "echten" Statement alle als String.
Ich vermute mal, dass die Spalten in Deiner Tabelle schon unterschiedliche Datentypen haben, oder?

Du solltest in einem DB Tool mal rumprobieren, was für ein Statement denn auch tatsächlich erfolgreich ausgeführt wird, entsprechend unter Berücksichtigung der verwendeten Datentypen.
 

shitake83

Mitglied
Danke für die schnellen Antworten.

Ja ich hab verschiedene Datentypen in der DB und ja ich weiss das ich einmal int und einmal String hab, war nur zu test zwecken ob überhaupt irgendwie, irgendwas geht.

So ich hab auch mal rumprobiert und rausgefunden was xHelp gesagt hat : den executeBatch befehl. Wenn ich den jetzt aber quasi druntermache, kriege ich folgendes:

Code:
java.sql.BatchUpdateException: Batch entry 0 INSERT INTO bs_verz_gc VALUES (1,2,3,4,5,6,7,8,9,10) was aborted.  Call getNextException to see the cause.
	at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2569)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1796)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:407)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2708)
	at DbConnect.setDataToDB(DbConnect.java:176)
	at DbConnect.printUrlContent(DbConnect.java:141)
	at DbConnect.DbConn(DbConnect.java:85)
	at DbConnect.main(DbConnect.java:202)

@preachie: ja ich werde mal ein paar statements direkt an der DB austesten.
 

Michael...

Top Contributor
Da ja an vielen Stellen etwas anderes als Zahlen erwartet wird, kann Dein DummyStatement schon mal gar nicht funktionieren.

Verwende PreparadStatements, dann tust Du die leichter mit den unterschiedlichen Datentypen.
 

shitake83

Mitglied
Wie gesagt, versuch es mal mit
Code:
executeUpdate

Wie du siehst habe ichs eingefügt und kriege diese Exception.

Danke für die schnellen Antworten.

Ja ich hab verschiedene Datentypen in der DB und ja ich weiss das ich einmal int und einmal String hab, war nur zu test zwecken ob überhaupt irgendwie, irgendwas geht.

So ich hab auch mal rumprobiert und rausgefunden was xHelp gesagt hat : den executeBatch befehl. Wenn ich den jetzt aber quasi druntermache, kriege ich folgendes:

Code:
java.sql.BatchUpdateException: Batch entry 0 INSERT INTO bs_verz_gc VALUES (1,2,3,4,5,6,7,8,9,10) was aborted.  Call getNextException to see the cause.
	at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2569)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1796)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:407)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2708)
	at DbConnect.setDataToDB(DbConnect.java:176)
	at DbConnect.printUrlContent(DbConnect.java:141)
	at DbConnect.DbConn(DbConnect.java:85)
	at DbConnect.main(DbConnect.java:202)

@preachie: ja ich werde mal ein paar statements direkt an der DB austesten.

habe meine Werte so geändert das sie von der Syntax her stimmen jetzt (im DB Tool getestet.)
Die Exception bleibt die gleiche nur das mein Insert argument ein anderes ist. Was kann also der Fehler sein??
Danke das ihr so schnell seid :)
 

preachie

Aktives Mitglied
In der Exception steht doch

Call getNextException to see the cause.

Darüber sollte man doch mehr Infos bekommen, wieso der Vorgang gescheitert ist?!
Wie gesagt, kenne mich weder mit Postgres noch der API aus, aber sollte doch kein Hexenwerk sein ;)
 

Michael...

Top Contributor
Lass Dir das Insert Statement mal per System.out ausgeben
- wenn Du darin keinen Fehler entdeckst, kopiere es (1:1) und führe es in Deinem Datenbanktool aus
- wenn es da geht, liegt's vermutlich nicht am Statement ;-)
 

shitake83

Mitglied
In der Exception steht doch



Darüber sollte man doch mehr Infos bekommen, wieso der Vorgang gescheitert ist?!
Wie gesagt, kenne mich weder mit Postgres noch der API aus, aber sollte doch kein Hexenwerk sein ;)


Irgendwie ist das verzwickt mit der nextEception weil da irgendwie nichts drin ist. Und ja Hexenwerk ist es nicht, aber du kennst ja unsere Halbleiterkollegen, die machen eh was sie wollen.

Lass Dir das Insert Statement mal per System.out ausgeben
- wenn Du darin keinen Fehler entdeckst, kopiere es (1:1) und führe es in Deinem Datenbanktool aus
- wenn es da geht, liegt's vermutlich nicht am Statement ;-)

Guter Ansatz, danke. Aber ich hab jetzt auch Feierabend und werd wohl nach Hause gehen. Setz mich aber bestimmt morgen nochmal dran, das lässt mich nicht los. Mein Programm wäre fertig wenn nicht dieses beschi**ene INSERT wäre :)

Dank euch Leute.
Schönes WE.
 
G

Gast2

Gast
Ich schätze mal das du beim insert die Datentypen falsch hast - probier es doch mal mit einem PreparedStatement... Sollte man sowieso vorziehen...
 

shitake83

Mitglied
Ich hatte Syntax & Denk Fehler und meine finale funktionierende Lösung ist:
Code:
 String sql = "INSERT INTO bs_verz_gc "
          + "(bs_nr,kv,plz,ort,strasse,lat,lng,loaddate,gcdate,flag)"
          + "VALUES('" + dbSet[0] +"','" + dbSet[1] +"','" + dbSet[2] +"','" + dbSet[3] +"','" + dbSet[4] +"','" + dbSet[5] +"','" + dbSet[6] +"','" + dbSet[7] +"','" + dbSet[8] +"','" + dbSet[9] +"')";

Danke für eure Hilfe.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JAVA Derby INSERT probleme Datenbankprogrammierung 12
R Derby/JavaDB Insert Statement Probleme Datenbankprogrammierung 14
R Probleme mit Insert Datenbankprogrammierung 2
TH260199 Java-Programm. Probleme bei der Umsetzung von einer Kontaktverwaltung. Datenbankprogrammierung 7
Zrebna Probleme bei Überführung von SQL-Code in eine HQL-Abfrage Datenbankprogrammierung 3
Kirby.exe Probleme mit docker-compose.yml Datenbankprogrammierung 4
B Probleme mit Datenbankverbindung Datenbankprogrammierung 2
N java SQL JAR - Probleme Datenbankprogrammierung 18
S probleme mit dem jdbc treiber Datenbankprogrammierung 1
T Oracle Probleme bei getTableName Datenbankprogrammierung 8
B Probleme mit java.sql.SQLException: ResultSet closed Datenbankprogrammierung 21
D Probleme bei Einsteiger Aufgabe SQL Datenbankprogrammierung 2
Z MySQL Probleme mit resultSet executQuery Datenbankprogrammierung 3
H Probleme mit Unicodedarstellung in Derby DB Datenbankprogrammierung 1
M MySQL probleme beim "Generate Tables from Entities" Datenbankprogrammierung 9
L Probleme mit DriverManager.getConnection(..) - Endlosschleife, Java Absturz, Keine Exception Datenbankprogrammierung 4
S Derby/JavaDB Probleme beim anlegen einer embedded DB Datenbankprogrammierung 13
P Probleme mit meinem 1. Hibernate Beispiel Datenbankprogrammierung 3
W Probleme mit AND und OR Datenbankprogrammierung 5
D DB Tabelle in JTable anzeigen - Probleme Datenbankprogrammierung 8
Gossi CallableStatement Probleme Datenbankprogrammierung 8
D Probleme bei der Erzeugung einer Tabelle Datenbankprogrammierung 15
L MySQL Probleme mit PreparedStatement für SQL-Abfrage in Java Datenbankprogrammierung 2
L Derby/JavaDB Derby macht Probleme Datenbankprogrammierung 4
B HSQLDB Probleme mit Select...Where Abfrage Datenbankprogrammierung 16
M Probleme mit Triggering Datenbankprogrammierung 2
F DB2 Probleme mit dem DriverManager Datenbankprogrammierung 4
S Derby/JavaDB OpenJPA, @oneToMany und Probleme Datenbankprogrammierung 2
I MySQL Probleme mit kyrillischen Zeichen Datenbankprogrammierung 2
A Derby/JavaDB Probleme beim Einbinden Datenbankprogrammierung 2
R isLast() Probleme bei Pervasive Datenbankprogrammierung 5
S Probleme mit localhost Datenbankprogrammierung 14
M Oracle Probleme mit dem anbinden einer Oracle 10g Datenbank Datenbankprogrammierung 27
J MySQL Hibernate: Probleme beim Speichern von OneToMany - Datensätzen Datenbankprogrammierung 2
P Hibernate -> Probleme bei n:m-Relation und JUnit Datenbankprogrammierung 10
J Probleme mit Datenbankzeiger Datenbankprogrammierung 19
A Probleme mit auf DB2 Express zugreiffen Datenbankprogrammierung 6
N Probleme beim Aufruf aus der DB Datenbankprogrammierung 7
M Probleme bei Select in Schleife Datenbankprogrammierung 7
G Probleme mit Datenbankanbindung Datenbankprogrammierung 3
P Probleme mit Oracle Timestamp Datenbankprogrammierung 3
klattiator Hibernate - Probleme bei Konfiguration Datenbankprogrammierung 3
F Probleme mit entfernter DB und Hibernate Zeichensatz Datenbankprogrammierung 3
G Probleme mit der Schnittstelle H1bernate/Eclipse Datenbankprogrammierung 6
A Probleme mit Jar-File in ein Jar-File Datenbankprogrammierung 8
O Derby Performance Probleme? Datenbankprogrammierung 4
V Probleme beim Öffnen "einiger" SuperbaseTabellen p Datenbankprogrammierung 8
G Probleme beim Methodenaufruf einer EJB Datenbankprogrammierung 10
ARadauer hibernate probleme Datenbankprogrammierung 13
Y Probleme mit H2 und Primary Key Datenbankprogrammierung 4
D Probleme mit mysql-Connection Datenbankprogrammierung 10
G INNODB backup probleme Datenbankprogrammierung 2
S Probleme mit statement.close() Datenbankprogrammierung 10
A Probleme beim Schreiben in eine CSV-Datei aus einer H2-DB Datenbankprogrammierung 2
G Probleme mit Laden des JDBC-Treiber in HSQLDB Datenbankprogrammierung 2
T Probleme mit Date in H2 Datenbank Datenbankprogrammierung 2
4 Probleme mit Select abfrage Datenbankprogrammierung 4
N Probleme mit Access-DB bei einem Webserver Datenbankprogrammierung 5
T Diverse JDBC Probleme (inner join, rs.last(), update) Datenbankprogrammierung 2
R Probleme mit Datensätzen in MySql DB Datenbankprogrammierung 3
B Oracle Driver Probleme Datenbankprogrammierung 2
I Probleme bei MySQL - Replikation Datenbankprogrammierung 2
R Probleme mit ausführbarem Jar Archiv Datenbankprogrammierung 9
F Probleme mit Jar Datei Datenbankprogrammierung 3
S String probleme Datenbankprogrammierung 3
R Probleme mit der Verbindung zum localhost Datenbankprogrammierung 12
S Probleme bei der Installation von MySQL 5.0 Datenbankprogrammierung 4
A Probleme mit ResultSet und getString(i) Datenbankprogrammierung 13
G Probleme mit Access und Join Datenbankprogrammierung 3
N Probleme mit "nur vorwärts gerichtete ResultSet" Datenbankprogrammierung 7
M Daten von MySQL nach MSSql probleme beim schreiben Datenbankprogrammierung 3
S JDBC-Anfänger und Probleme beim Treiberfinden etc. Datenbankprogrammierung 4
T Probleme beim Verbindungsaufbau zum SQL 2000 Datenbankprogrammierung 2
G Probleme mit Datenbankeinträge Datenbankprogrammierung 4
G Probleme mit Treiber (connector) Datenbankprogrammierung 20
thE_29 getBytes() - russland/bulgarien -- andere Codecs Probleme Datenbankprogrammierung 8
E Probleme mit JDBC und Executable-Jar Datenbankprogrammierung 2
G Probleme mit MySQL - Anmeldung Datenbankprogrammierung 2
P Probleme mit NullPointerException Datenbankprogrammierung 5
K MySQL: Probleme mit dem Verbinden per IP-Adresse Datenbankprogrammierung 6
T Probleme mit Datenbank Datenbankprogrammierung 6
T compiler fehler: should be mapped with insert="false" update="false" Datenbankprogrammierung 1
L SQL Datenbank INSERT INTO Datenbankprogrammierung 6
L SQL Datenbank Tabelle insert Datenbankprogrammierung 7
O HOW TO INSERT PRIMARY INTO ANOTHER TABLE AND USE IT AS FOREIGN KEY TO DISPLAY DATA IN A RELATIONSHIP Datenbankprogrammierung 3
G Eine Spalte in xampp als Typ array erstellen - ein array mit "insert" hinzufügen. Datenbankprogrammierung 3
C Problem with INSERT.............ON DUPLICATE KEY Datenbankprogrammierung 3
A MySQL Select und Insert in Java Datenbankprogrammierung 15
S PostgreSQL Bytea INSERT Datenbankprogrammierung 8
W Problem mit Insert in zwei Tabellen Datenbankprogrammierung 8
L INSERT INTO Befehl in Java Datenbankprogrammierung 8
L SQL-Statement INSERT INTO ON DUPLICATE KEY UPDATE funktioniert nicht Datenbankprogrammierung 5
D Insert Methode per Servlet Datenbankprogrammierung 2
D Insert Methode per Servlet Datenbankprogrammierung 0
D SQLite INSERT OR REPLACE INTO macht neuen Eintrag?! Datenbankprogrammierung 2
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
B JPA->fehler beim Insert in die Datenbank Datenbankprogrammierung 3
A Oracle insert Array in DB Datenbankprogrammierung 7
C MySQL JTable in JScrollPane nach insert aktualisieren Datenbankprogrammierung 3
X SQLite Erhalte bei Query INSERT INTO eine NullPointerException Datenbankprogrammierung 10

Ähnliche Java Themen

Neue Themen


Oben