![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Vlad |
|
|||
|
Unregistered |
Никак не могу понять почему в данном сервлете в строке statement.executeQuery("INSERT INTO table2 VALUES(make, model)" ); Strings make and model, не загоняются в базу данных? Если ставлю одиночные кавычки, все приходит в норму. statement.executeQuery("INSERT INTO table2 VALUES('make',' model')" ); Спасибо public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request,response); } public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { Connection con = null; make = request.getParameter("make"); model = request.getParameter("model"); try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); con = DriverManager.getConnection("jdbc:odbc:auto"); if (con !=null) { Statement statement = con.createStatement(); statement.executeQuery("INSERT INTO table2 VALUES(make,model)" ); }//close if }//close try catch (SQLException sqle) { System.err.println(sqle.getMessage()); } catch (ClassNotFoundException cnfe) { System.err.println(cnfe.getMessage()); } catch (Exception e) { System.err.println(e.getMessage()); } finally { try { if (con != null) { con.close(); } } catch (SQLException sqle) { System.err.println(sqle.getMessage()); } } |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Во-первых, лучше для INSERT, UPDATE, DELETE использовать executeUpdate - это правильнее. А во-вторых, в кавычки обязательно надо ставить - это же строковые значения. И на SQL команда именно с кавычками и посылается. Так что здесь никаких странностей нет. |
|||
|
||||
| Vlad |
|
|||
|
Unregistered |
если клиент отсылает параметры сервлету, двум стрингам model & make я присваиваю эти значения, как теперь эти стринги засунуть в SQL запрос.
еще раз спасибо.... |
|||
|
||||
| SmaLL |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 557 Регистрация: 17.12.2002 Где: Voronezh Репутация: 1 Всего: 2 |
Т.е. тебе нужен параметризованный запрос? Тогда используй preparedStatement. -------------------- Что ни делается - всЁ к лучшему! SmallWeb Мой адрес не дом и не улица, мой адрес родной пивзавод! |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
IMHO - это наиболее удобное и правильное решение. Или в конце концов делай конкатенацию строк, но не забудь добавить кавычки. Что-то типа "INSERT INTO T1 (A,B) VALUES(' "+value2+" ',' "+value1+" ')" Видно плохо, поэтому я ординарные кавычки отделил пробелом, но только, чтобы их было видно. |
|||
|
||||
| Vlad |
|
|||
|
Unregistered |
Попробовал сделать, подобным образом и в базу записываются значения null. statement.executeUpdate("INSERT INTO table2 VALUES(' "+make+" ',' "+model+" ' )" ); |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Список полей, как я понимаю, не нужен. У тебя всего два поля в таблице. А ты перед отправкой не смотрел, что за строка у тебя формируется ? Ты ее сначала сформируй, напечатай. И проверь. Потому как странно сие - должно все нормально работать. |
|||
|
||||
| Vlad |
|
|||
|
Unregistered |
Огромное спасибо!
Все заработало. Сам лоханулся с подачей от клиента. |
|||
|
||||
| Vlad |
|
|||
|
Unregistered |
Антон еще один вопрос (Прости если я тебя задолбал)
Cтроки джавы мы записываем в sql вышеупомянутым способом: statement.executeUpdate("INSERT INTO table2 VALUES(' "+value1+" ',' "+value2+" ' )" ); а как записать имя переменной “a”, допустим int a = 567; |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Тебе повезло, что я просматриваю все сообщения в разделе - в будущем, пожалуйста, не нарушай правила.
Один вопрос - одна тема Т.е. для следующего вопроса начинай новую тему. Это больше нужно именно тем, кто спрашивает - можно просто перестать заходить в ту тему, где уже по идее все закончилось.
Я не очень понял вопрос. Если ты хочешь запрос использовать много раз и только подставлять параметры - то используй preparedStatement Connection con = ...; PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES SET SALARY = ? WHERE ID = ?"); pstmt.setBigDecimal(1, 153833.00); pstmt.setInt(2, 110592); А если просто сформировать строку - то statement.executeUpdate("INSERT INTO table2 VALUES("+value1+","+value2+")" ); В смысле не использовать кавычки вообще, только строки закрывать, а JAVA сама преобразует целое в строку и у тебя получится обычный SQL-запрос |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |