2017-05-01 2 views
0
Class.forName("com.mysql.jdbc.Driver"); 
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/facts", "root", ""); 
int x = s.size(); 
for(int i=0; i<x; i++) 
{ 
    String sql = "INSERT INTO facts.facts (Sno, Description) VALUES ("+ i +","+ s.get(i) + ")"; 
    Statement stmt = con.createStatement(); 
    stmt.executeUpdate(sql); 
} 

Ich erhalte diesen Fehler: Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, damit die richtige Syntax in der Nähe von mehr als 1/3 der Erwachsenen verwendet werden kann und über 12,5 Millionen Kinder und Jugendliche in den USA übergewichtig sind. in Zeile 1.JDBC MySQL Fehler

Die erste Reihe von ArrayList s ist "Mehr als ein Drittel der Erwachsenen und über 12,5 Millionen Kinder und Jugendliche in den USA sind übergewichtig. In den letzten 30 Jahren hat sich Fettleibigkeit bei Kindern und Jugendlichen fast verdreifacht . "

Antwort

1

Die unmittelbare Ursache für Ihren Fehler ist wahrscheinlich, dass die Zeichenfolge, die Sie einfügen möchten, nicht ordnungsgemäß zitiert wird. Sie könnte folgendes versuchen zu beheben, dass:

"'" + s.get(i) + "'" 

aber Sie wirklich eine vorbereitete Erklärung hier verwendet werden soll:

for (int i=0; i < x; i++) { 
    String selectSQL = "INSERT INTO facts.facts (Sno, Description) VALUES (?, ?)"; 
    PreparedStatement ps = con.prepareStatement(sql); 
    ps.setInt(1, i); 
    ps.setString(2, s.get(i)); 
    ps.executeUpdate(); 
} 

Vorteile der Verwendung von Prepared Statements umfassen:

  • Zeichenfolge Angebot/Entkommen wird für Sie automatisch behandelt
  • Schutz gegen SQL-Injektion
  • Abfrage ist leichter zu lesen und zu verwalten, wie SQL-Sprache deutlich von Ihrem Java-Anwendung Code
abgegrenzt ist
+0

** Noch angezeigt Fehler: ** Sie haben einen Fehler in der SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe von "?,?)" in Zeile 1 – whinytween96

+0

Seltsam ... es sollte funktionieren. Können Sie versuchen, die rohe INSERT-Abfrage auf MySQL auszuführen? –

+0

@TimBiegeleisen: Verwenden Sie nicht den Parameter 'sql' im Aufruf von' ps.executeUpdate() '. –