Почему этот SQL выполняется в MySQL, а не через Eclipse? - PullRequest
0 голосов
/ 06 февраля 2012

У меня есть следующая таблица в MYSQL:

  CREATE TABLE 't001_prospeccao' (
  'pro_id' bigint(20) NOT NULL AUTO_INCREMENT,
  'pro_cliente' bigint(20) NOT NULL,
  'pro_produto' bigint(20) NOT NULL,
  'pro_status' int(11) DEFAULT NULL,
  'pro_vlr_entabulado' double DEFAULT NULL,
  'pro_vlr_contratado' double DEFAULT NULL,
  'pro_vlr_utilizado' double DEFAULT NULL,
  'pro_obs' varchar(255) DEFAULT NULL,
  'pro_dt_visita' datetime DEFAULT NULL,
  'pro_dt_originacao' datetime DEFAULT NULL,
  'pro_protocolo' double DEFAULT NULL,
  'pro_correio' double DEFAULT NULL,
  'pro_dt_status' datetime DEFAULT NULL,
  'pro_funci' bigint(20) DEFAULT NULL,
  PRIMARY KEY ('pro_id'),
  UNIQUE KEY 'id_UNIQUE' ('pro_id')
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1

И следующий оператор INSERT, который обычно выполняется в консоли MySQL:

INSERT INTO t001_prospeccao (pro_cliente,pro_produto) VALUES (123456789,111)

Но при запуске этого кода в Eclipseвозникает ошибка:

 String sql = "INSERT INTO t001_prospeccao (pro_cliente,pro_produto) VALUES (?,?);";

            PreparedStatement stmt = connection.prepareStatement(sql);

            try {
                stmt.setLong(1, p.getCliente().getMci());
                stmt.setLong(2, p.getProduto().getCod());

                stmt.execute(sql);

            } catch (SQLException e) {
                throw new RuntimeException(e);
            } finally {
                stmt.close();
            }

Ошибка:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?,?)' at line 1

Данные из объекта stmt:

INSERT INTO t001_prospeccao (pro_cliente,pro_produto) VALUES (123456789,111)

Что делать неправильно?Заранее спасибо.

1 Ответ

4 голосов
/ 06 февраля 2012

Вы используете Statement.execute(String), где вы должны использовать метод PreparedStatement.execute():

stmt.execute(sql);

Эта строка должна быть:

stmt.execute();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...