Probleme beim schreiben in MySQL-DB

Jobless

Grünschnabel
Hi Coder,

sicher kann mir einer von euch auf die sprünge helfen.

ich schreibe gerade ein programm, welches wetterdaten aus einer textdatei ausliest, daraus ein sql-statement "INSERT INTO" macht und das dann auf meine db schreiben soll.

das mit dem statement klapp es sieht folgendermaßen aus

INSERT INTO `tbl_wetter_min` (`Datum`, `zeit`, `windrichtung`, `Windgeschwindigkeit`, `Temperatur_2m`,`relative_feuchte`, `Taupunkttemp`, `Temperatur_5cm`,`Niederschlag`, `Regenstatus`, `Globalstrahlung`,`Sonnenstatus`, `Sonnenscheindauer`) VALUES ('23.06.05', '19:00:00', 58.4, 2.6, 31.7, 34.5, 14.0, 31.8, 0.0, '0.0', 233.6, '1.0', 778.3), ('23.06.05', '19:02:00', 60.5, 4.4, 31.4, 34.1, 13.6, 31.2, 0.0, '0.0', 216.4, '1.0', 784.1);

Das ist nur ein Auszug daraus. das gesamte statement beinhaltet die werte einer stunde.

wenn ich das statement, das ich in einer textarea ausgebe, in phpmyadmin als sql eintrage, werden die daten tadellos in die db eingetragen. :)

nur wenn ich die daten aus meinem program heraus auf die db laden will geht das nicht.:mad:

to be continued ...
 
hier ist eine methode aus der klasse die in die db schreiben soll:

Code:
public void DatabaseLister()  	{
  String treiber = "com.mysql.jdbc.Driver" ;
     try	{
        Class.forName(treiber).newInstance();
         }
     catch (Exception e)
     {
        e.printStackTrace();
     }
     Statement stmt = null; 
     ResultSet rs = null;
     String dbURL = "jdbc:mysql://" + databaseName+ ":3306/" + dbName + "?user=" + databaseUser + "&password=" + databasePwd;
     Connection con = null;
     try	{
         con = DriverManager.getConnection(dbURL);
         stmt = con.createStatement();
         stmt.executeUpdate(this.mySQLstatement);
         }
     catch (SQLException e1) 
     {
          e1.printStackTrace();
     } 
     finally
     {
          if (con != null)
               try{con.close();}
               catch (SQLException e2)
               {e2.printStackTrace(); }
     }
}

nach dem ausführen dieser methode erhalte ich folgende fehlermeldung

java.sql.SQLException: Syntax error or access violation message from server: "Fehler in der Syntax bei ';

' in Zeile 60."
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2001)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1168)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1279)
at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:1225)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2278)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2225)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1259)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1205)
at wetterdaten.CDbWriter.DatabaseLister(CDbWriter.java:95)
at wetterdaten.CWetterdaten.AccessDatabase(CWetterdaten.java:85)
at wetterdaten.CWetterdaten.actionPerformed(CWetterdaten.java:51)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

so ..
der worte sind genug gewechselt nun lasst taten sprechen.

ich weiss genau dass ich nen fehler eingebaut habe. nur sagt mir wo. <--
 
Die Fehlermeldung läßt vermuten, dass es hinten im Statement am Semikolon liegt, also würde ich mal vorschlagen, dass weg zu machen.

PS: .. und die Fehlermeldung zu lesen .. ;)
 
thx teppi,

hab ich gelesen und nicht verstanden.

aber wenn man die doku liest, sieht man, dass das statement kein semikolon braucht im gegensatz zu php.
 
Hi,

hmm also meiner Meinung nach stimmt da die reihenfolge nicht ganz.. das Port kommt bei dir nach dem DBNamen..hmmm also ich habe dir mal meinen Connection String kopiert der funktioniert auf jeden Fall, vergleichs einfach mal..

Meins:
this.url =("jdbc:mysql://"+this.host+":"+Integer.toString(this.port)+"/"+this.database+"?user="+this.usr+
"&password="+this.pwd);
Deins:
String dbURL = "jdbc:mysql://" + databaseName+ ":3306/" + dbName + "?user=" + databaseUser + "&password=" + databasePwd;
 
@stamp000

nunja, wenn du ausschliesslich auf den variablennamen gehst stimmt das was du schreibst schon.

da ich allerdings (besonders clever :rolleyes: ) an stelle von hostname -> databasename geschrieben habe stimmt auch mein connectionstring wieder.

btw. es lag tatsächlich nur am semikolon am ende, den ich beim php-statement brauche.

Closed
 
Zurück