2014-01-04 5 views
0

Я хотел бы иметь значение из строки, вставленной в другую строку вот мой код:вставить в выберите в MySQL с JDBC

static void addVipMonth(String name) throws SQLException 
{ 
    Connection conn = (Connection) DriverManager.getConnection(url, user, pass); 
    PreparedStatement queryStatement = (PreparedStatement) conn.prepareStatement("INSERT INTO vips(memberId, gotten, expires) " + 
      "VALUES (SELECT name FROM members WHERE id = ?, NOW(), DATEADD(month, 1, NOW()))"); //Put your query in the quotes 
    queryStatement.setString(1, name); 
    queryStatement.executeUpdate(); //Executes the query 
    queryStatement.close(); //Closes the query 
    conn.close(); //Closes the connection 
} 

Этот код не действителен. Как это исправить?

+0

Недействительно как? BTW: Вам почти никогда не нужно бросать в «Connection» или «PreparedStatement», поскольку методы уже возвращают эти (из пакета 'java.sql'), это может быть признак того, что вы используете неправильные типы для своих переменных , –

ответ

2

Я получаю сообщение об ошибке 17:28:46 [SEVERE] com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MyS QL server version for the right syntax to use near ' NOW(), DATE_ADD(now(), INT ERVAL 1 MONTH)' at line 1 - sanchixx

Это было из-за ошибки в SELECT .. заявлении.
Модифицированный утверждение:

INSERT INTO vips(memberId, gotten, expires) 
    SELECT name, NOW(), DATE_ADD(now(), INTERVAL 1 MONTH) 
    FROM members WHERE id = ? 

  1. Вам не требуется VALUES ключевое слово, когда inserting с select.
  2. Вы использовали неправильный DATEADD синтаксис функции. Правильный синтаксис - Date_add(date_expr_or_col, INTERVAL number unit_on_interval).

Можно попробовать вставить заявление как исправленный ниже:

INSERT INTO vips(memberId, gotten, expires) 
    SELECT name FROM members 
    WHERE id = ?, NOW(), DATE_ADD(now(), INTERVAL 1 MONTH) 

См:

  1. INSERT ... SELECT Syntax
  2. DATE_ADD(date,INTERVAL expr unit)
+0

Я получаю сообщение об ошибке '17:28:46 [SEVERE] com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySql QL для правильного синтаксиса, используемого рядом с 'NOW(), DATE_ADD (now(), INT ERVAL 1 MONTH)' в строке 1' – sanchixx

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