2014-10-14 2 views
0

Я пытаюсь заполнить удаленную базу данных, но в настоящее время я получаю эту ошибку, и я не уверен, как это исправить. Ошибка относится к первому значению, которое я пытаюсь ввести в таблицу. Я обработал события, в которых no eventID не будет передаваться в таблицу eventID.Неизвестный столб в 'списке полей' MySQLSyntaxErrorException

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column '0654fac7' in 'field list' 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 

Это мой код:

protected void loadToDatabase() { 
    String dbURL = "jdbc:mysql://remotehost/database"; 
    String usr = "username"; 
    String password = ""; 
    try { 
     Connection Conn = DriverManager.getConnection(dbURL, usr, password); 
     Statement stmt = Conn.createStatement(); 
     for (String i : eventIDs) { 
      String sql = "INSERT INTO eventID VALUES (" + i + ");"; 
      stmt.executeUpdate(sql); 
     } 
     System.out.println("Insert complete"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

Это данные, которые я пытаюсь передать в базу данных:

Test Case 0: 0654fac7-7aa8-4c55-bdaf-77b39692aa3f-1413318357238 
Test Case 1: f9914577-c60d-49ae-bec6-4db0463676fd-1413318358598 
Test Case 2: 6f1b6e4e-9d51-411b-8248-2cd9e1ef2712-1413318360005 
Test Case 3: 330860b3-f22b-4b84-9837-bb949c2659ca-1413318361411 
Test Case 4: no eventID 
Test Case 5: e09f77f3-d816-49ab-90cd-4df56d8c8ef2-1413318366577 
Test Case 6: f580e84e-7a3d-4693-bbea-454c5d699070-1413318367992 
Test Case 7: no eventID 

Моя база данных состоит просто из одного столбца.

mysql> show tables in eventID; 
+-------------------+ 
| Tables_in_eventID | 
+-------------------+ 
| eventID   | 
+-------------------+ 

ответ

2

Так ошибка я сделал был на этой строке кода

String sql = "INSERT INTO eventID VALUES (" + i + ");";

Правильный функциональный код, потому что я передаю строка:

String sql = "INSERT INTO eventID VALUES (" + "\"" + i + "\"" + ");";

I нужны кавычки!

+4

A PreparedStatement позволит избежать вашей проблемы, быть быстрее и будет препятствовать внедрению sql. –

1

У меня есть код Litle, чтобы поделиться.

Это мой пример таблицы ++++++++++ Ganaderos ++++++++++ CodGanadero NomGanadero ApeGanadero ++++++++++

 System.out.print("Ingrese codigo del Ganadero : "); 
     CodigoGanadero= scn.nextLine(); 

     System.out.print("Ingrese Nombre del Ganadero : "); 
     NombreGanadero=scn.nextLine(); 

     System.out.print("Ingrese Apellido del Ganadero : "); 
     ApellidoGanadero=scn.nextLine(); 
     int rs2=0; 
     rs2 = s2.executeUpdate ("insert into ganaderos (CodGanadero,NomGanadero,ApeGanadero) " 
       + "values ("+"\""+CodigoGanadero+"\""+","+"\""+NombreGanadero+"\""+","+"\""+ApellidoGanadero+"\""+")"); 
+0

Это 3 лагеря, вставка в таблицу mysql. Надеюсь, помогите кому-то. – Alvaro

Смежные вопросы