2015-06-27 2 views

ответ

4

Не писать свои запросы таким образом, это небезопасно (инъекции SQL) и, возможно, намного медленнее, чем следующий метод:

использовать подготовленные заявления для запросов с переменными в это:

String sql="INSERT INTO players (player_uuid , name , age , gender , bios) "+ 
" VALUES (?,?,?,?,?)"; 
PreparedStatement pstmt=connection.prepareStatement(sql); 
pstmt.setString(1,"UUID"); 
pstmt.setString(2,"TestName"); 
pstmt.setint(3,8); 
pstmt.setString(4,"Female"); 
pstmt.setString(5,"TestBios"); 
pstmt.execute(); 
pstmt.close(); 

база данных будет кэшировать план выполнения подготовленного оператора, это экономит время на следующий раз, когда используется тот же оператор (в значительной степени независимо от значений, однако некоторые базы данных будут корректировать план на основе значений). С вставками экономия минимальна в большинстве условий, при этом выбор общей экономии может быть значительным.

1

Вам нужно поместить свои значения в кавычку, чтобы рассматривать их как строку.

String sql = "INSERT INTO players (player_uuid , name , age , gender , bios) " + 
     "VALUES ('UUID' , " + " 'TestName' , 8 , 'Female' , 'TestBios')"; 

Символ `char зарезервирован для имен имен esacaping.

1

Вы хотели сказать, как показано ниже. Заменить эти backtique с singlequote

String sql = "INSERT INTO players (player_uuid , name , age , gender , bios) 
VALUES ('UUID' ,'TestName' , 8 , 'Female' , 'TestBios')"; 
0

Используйте этот код с кодом. Ошибка возникает из-за того, что в SQL-запросе вы не использовали одиночную таблицу для строковых значений. На самом деле лучшим способом для этого является использование PreparedStatement.

String sql = "INSERT INTO players (player_uuid , name , age , gender , bios) " 
      + "VALUES ('UUID' , " + " 'TestName' , 8 , 'Female' , 'TestBios')"; 
Смежные вопросы