2015-03-01 5 views
1

У меня возникли проблемы с попыткой вставить значения в мою базу данных.Java Неверный синтаксис рядом с '0'

Когда я сделать этот код работает

insertString = "insert into Players  
values(1,'Fred','Fish','[email protected]','Ithroeann',19770322)"; 
statement.executeUpdate(insertString); 

, но когда я пытаюсь это сделать смотрите здесь он дает мне неправильный синтаксис около «0» Ошибка

Я пытаюсь кольцую чтобы добавить его автоматически через файл

Scanner input = new Scanner(new File("players.txt")); 
     while (input.hasNext()) { 
     String[] temp; 
     String str = input.next(); 
      temp = str.split("\\|"); 

insertString = "insert into Players values(temp[0], temp[1],temp[2],temp[3],temp[4],temp[5])"; 
     statement.executeUpdate(insertString); 
} 
+0

Может ли вы отправить PL PLUS весь класс? –

+0

Получаете ли вы синтаксическую ошибку java синтаксиса или время выполнения SQL-синтаксиса? SQL недействителен, он не будет обращаться к таким переменным java. – bereal

ответ

1

Это строка. Если вы хотите добавить элементы массива temp к String, вы не сможете сделать это таким образом.

Вы можете сделать это следующим образом:

insertString = "insert into Players values("+temp[0]+",'"+temp[1]+"','"+temp[2]+"','"+temp[3]+"','"+temp[4]+"',"+temp[5]+")"; 
statement.executeUpdate(insertString); 

Конечно используя PreparedStatement будет гораздо лучшим решением.

PreparedStatement stmt = conn.prepareStatement("insert into Players values(?,?,?,?,?,?)"); 
stmt.setInt (1, Integer.parseInt(temp[0])); 
stmt.setString (2, temp[1]); 
stmt.setString (3, temp[2]); 
stmt.setString (4, temp[3]); 
stmt.setString (5, temp[4]); 
stmt.setInt (6, Integer.parseInt(temp[5])); 
stmt.executeUpdate(); 
+0

Спасибо за решение. Мне было интересно, почему он не работает, поскольку он работал на бумаге – user1879973

1

PreparedStatement Используйте, чтобы связать свои параметры запроса, как

PreparedStatement pStmt = connection.prepareStatement(
     "insert into Players values (?, ?, ?, ?, ?, ?)"); 

// index starts from 1 
int i = 1; 
// bind first int value 
pStmt.setInt(i, Integer.parseInt(temp[0])); 

// bind string values 
for (; i < temp.length; i++) 
    pStmt.setString(i, temp[i-1]); 

// bind last int value 
pStmt.setInt(i, Integer.parseInt(temp[i-1])); 

// execute insert 
pStmt.executeUpdate(); 
0

Если код размещен выше, не является частичным, кажется, вы пропустили часть подготовки заявления. Попробуйте что-нибудь вроде:

Scanner input = new Scanner(new File("players.txt")); 
     while (input.hasNext()) { 
     String[] temp; 
     String str = input.next(); 
      temp = str.split("\\|"); 

dbConnection = getDBConnection(); // Implement this method based on your DB configuration 

String insertString = "insert into Players values(?, ?, ? , ?, ?, ?)"; 

PreparedStatement statement = dbConnection.createStatement(); 
statement.setInt(temp[0]); // int, or whichever type you have 
statement.setInt(temp[1]); // int, or whichever type you have 
statement.setInt(temp[2]); // int, or whichever type you have 
statement.setInt(temp[3]); // int, or whichever type you have 
statement.setInt(temp[4]); // int, or whichever type you have 
//^for the above, if all fields are the same - you can do this in a loop 


statement.executeUpdate(insertTableSQL); // execute the insert 
Смежные вопросы