2012-05-19 3 views
0

Я пытаюсь записать переменные String в базу данных в инструкции MySQL на Java.Передача переменной в инструкции MySQL

Я читал this и this, но я не смог добиться успеха.

Вот мой код:

public void registerUser(String userName, String password) { 

    try { 
     String insertQuery = "INSERT INTO Credentials ('11', name, pass) VALUES('11', ?, ?)"; 
     pstmt = connection.prepareStatement(insertQuery); 
     pstmt.setString(2, userName); 
     pstmt.setString(3, password); 
     pstmt.executeUpdate(); 
//   statement.executeUpdate("INSERT INTO Credentials VALUES(3, 'userName', 'password')"); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } finally { 
     // close the connection when done 
     try { 
      if (connection != null) { 
       connection.close(); 
      } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    }//END finally 

}//END registerUser 

Как вы можете видеть, этот код получает два значения типа String и он должен поместить их в базу данных. Но я не могу найти правильное решение.

Любые идеи?

Спасибо.

+0

Для меня это чистое решение. Это лучше, чем серия конкатенаций строк или что-то еще. – Zakaria

ответ

2

Это:

pstmt.setString(2, userName); 
pstmt.setString(3, password); 

должно быть:

pstmt.setString(1, userName); 
pstmt.setString(2, password); 

Вы только с помощью двух переменных в вашем PreparedStatement, так что вам нужно, чтобы начать отсчет в 1. Целые числа, используемые в сеттер методы должны совпадать с вопросительными знаками в вашем заявлении, а не в списке параметров данной строки SQL.

+0

Изменен так, как вы сказали. Но на этот раз я получаю синтаксическую ошибку SQL для назначения строки, говоря, что мой синтаксис неправильный. Я должен его изменить. Что с этим не так? –

+0

Я думаю, что ошибка относится к '' 11 '' для имени столбца. – Jeremy

+0

Изменено: String insertQuery = "INSERT INTO Credentials (11, name, pass) VALUES ('11 ',?,?)"; Затем это: String insertQuery = "INSERT INTO Credentials VALUES ('11 ',?,?)"; Но не повезло. Как должна быть эта строка? –

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