Indsætte data i MySQL database
Jeg indsætter en masse data i en MySQL database ved hjælp af dette script:---------------------------------------------------------------------
import java.io.*;
public class FileScanner
{
public static void visFiler(File mappe) throws Exception
{
File[] filer = mappe.listFiles();
for (int i = 0; i < filer.length; i++)
{
File f = filer[i];
System.out.println(f);
Database.insertSQL("INSERT INTO files (fil) VALUES ('" + f + "');");
if (f.isDirectory())
{
visFiler(f);
}
}
}
public static void main(String[] args) throws Exception
{
Database.makeConn("172.0.0.1", "test", "root", "");
File t = new File("e:/");
visFiler(t);
}
}
---------------------------------------------------------------------
Database.java er bare en statisk klasse indeholdende en bunke metoder jeg bruger til bl.a. oprette forbindelse, indsætte data og hente data.
Her er et uddrag af Database-klassen:
---------------------------------------------------------------------
import java.sql.*;
public class Database
{
private static Statement stmt;
public static void makeConn(String ip, String db, String username, String password) throws Exception
{
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://" + ip + "/" + db, username, password);
stmt = conn.createStatement();
}
public static void insertSQL(String sql) throws Exception
{
stmt.executeUpdate(sql);
}
public static void close() throws SQLException
{
stmt.close();
}
}
---------------------------------------------------------------------
Klasserne virker fint nok - der bliver indsat en masse data i databasen, men når der er indsat omkring 17300 rækker så får jeg en exception:
java.sql.SQLException: Syntax error or access violation, message from server: "You have an error in your SQL syntax near 'F%20I%20COULD%20TURN%20BACK%20TIME[1].mid')' at line 1"
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1876)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1098)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1192)
at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:1153)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2048)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2005)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1252)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1198)
at test.Database.insertSQL(Database.java:31)
at test.FileScanner.visFiler(FileScanner.java:16)
at test.FileScanner.visFiler(FileScanner.java:20)
at test.FileScanner.visFiler(FileScanner.java:20)
at test.FileScanner.visFiler(FileScanner.java:20)
at test.FileScanner.visFiler(FileScanner.java:20)
at test.FileScanner.visFiler(FileScanner.java:20)
at test.FileScanner.visFiler(FileScanner.java:20)
at test.FileScanner.visFiler(FileScanner.java:20)
at test.FileScanner.main(FileScanner.java:30)
Hvad kan problemet være?
