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):
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:
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^^
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();
}
}