Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
1 / 1 / 1
Регистрация: 05.03.2013
Сообщений: 41

Ошибка при добавлении записи в БД

03.05.2013, 14:54. Показов 1742. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Извиняюсь за глупый вопрос. Помогите подправить кавычки в SQL запросе.

Java
1
2
3
4
5
public static void InsertAddress(Address address) throws SQLException, ClassNotFoundException
{        
stat.executeUpdate("INSERT INTO Addresses.tAddress (Firstname, Lastname, Country, City, Address, Index) "
                         + "VALUES (" + address.getFirstname() + "\", \"" + address.getLastname() + "\", \"" + address.getCountry() + "\", \"" + address.getCity() + "\", \"" + address.getAddress() + "\", " + address.getIndex() + ")");
}
Постоянно такая ошибка:
javax.servlet.ServletException: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "INSERT INTO Addresses.tAddress (Firstname, Lastname, Country, City, Address, Index) VALUES (Ivan"", ""Ivanov"", ""Russia"", ""Ivanovo"", ""Address 21-32[*]"", 95632)"; SQL statement:
INSERT INTO Addresses.tAddress (Firstname, Lastname, Country, City, Address, Index) VALUES (Ivan", "Ivanov", "Russia", "Ivanovo", "Address 21-32", 95632) [42000-171]

Уже по-разному их переставляла, то не хватает одной, то две лишние и т.д.
Помогите, пожалуйста!!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.05.2013, 14:54
Ответы с готовыми решениями:

Ошибка при добавлении записи в таблицу Hibernate
package kurs.stu.forum.jpa; import java.io.Serializable; import javax.persistence.*; import java.util.Date; import...

Ошибка при добавлении записи
У меня программа с бд. Где есть dbmemo и dbimage. Когда я в первый раз загружаю картинку то все нормально,а когда нажимаю редактировать и...

Ошибка при добавлении записи в БД
Здравствуйте! Суть проблемы такова Пишу телефонный справочник и пытаюсь добавить запись. Код такой Imports System.Data.OleDb Public...

15
 Аватар для AckiyBolt
653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
03.05.2013, 15:26
нет предела лени человеческой. вроде так:

Java
1
2
3
4
5
6
7
8
9
stat.executeUpdate("INSERT INTO Addresses.tAddress (Firstname, Lastname, Country, City, Address, Index) "
        + "VALUES ("
        + "\"" + address.getFirstname() + "\""
        + "\"" + address.getLastname() + "\""
        + "\"" + address.getCountry() + "\""
        + "\"" + address.getCity() + "\""
        + "\"" + address.getAddress() + "\""
        + "\"" + address.getIndex() + "\""
        + ")");
1
1 / 1 / 1
Регистрация: 05.03.2013
Сообщений: 41
03.05.2013, 16:22  [ТС]
AckiyBolt, Вставила ваш код. Теперь выдаёт ошибку:

javax.servlet.ServletException: org.h2.jdbc.JdbcSQLException: Column "Ivan" not found; SQL statement:
INSERT INTO Addresses.tAddress (Firstname, Lastname, Country, City, Address, Index) VALUES ("Ivan","Ivanov","Russia","Ivanovo","Add ress 21-32",34) [42122-171]

Не могу понять, что не так?

index.jsp
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<%@page import="java.util.ArrayList"%>
<%@page import="Data.Database"%>
<%@page import="Data.Address"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <form>
            <table>
                <tr><td>Firstname: </td><td><input type="text" name="Firstname"></td></tr>
                <tr><td>Lastname: </td><td><input type="text" name="Lastname"></td></tr>
                <tr><td>Country: </td><td><input type="text" name="Country"></td></tr>
                <tr><td>City: </td><td><input type="text" name="City"></td></tr>
                <tr><td>Address: </td><td><input type="text" name="Address"></td></tr>
                <tr><td>Index: </td><td><input type="text" name="Index"></td></tr>
                <tr><td></td><td><input type="submit" value="Add"></td></tr>
                
                <%   
                    ArrayList<Address> address = Database.PrintAddress();
                    
                    if(request.getParameter("Firstname") != null && request.getParameter("Lastname") != null && 
                    request.getParameter("Country") != null && request.getParameter("City") != null && 
                    request.getParameter("Address") != null && request.getParameter("Index") != null)
                    { 
                        String firstname = request.getParameter("Firstname");
                        String lastname =request.getParameter("Lastname");
                        String country = request.getParameter("Country");
                        String city = request.getParameter("City");
                        String addres = request.getParameter("Address");
                        String index = request.getParameter("Index");
 
                        Database.InsertAddress(new Address(firstname, lastname, country, city, addres, Integer.parseInt(index)));
                    }                
                %>                
            </table>
        </form>
    </body>
</html>

Address.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package Data;
 
public class Address {    
       
    private String firstname;
    private String lastname;
    private String country;
    private String city;
    private String address;
    private int index; 
    
    public Address(String firstname, String lastname, String country, String city, String address, int index)
    {
        this.firstname = firstname;
        this.lastname = lastname;
        this.country = country;
        this.city = city;
        this.address = address;
        this.index = index;
    }
    
    public String getFirstname() { return firstname; }
    
    public void setFirstname(String firstname) { this.firstname = firstname;}
    
    public String getLastname() { return lastname; }
    
    public void setLastname(String lastname) { this.lastname = lastname;}
    
    public String getCountry() { return country; }
    
    public void setCountry(String country) { this.country = country; }
    
    public String getCity() { return city; }
    
    public void setCity(String city) { this.city = city;}
    
    public String getAddress() { return address; }
    
    public void setAddress(String address) { this.address = address;}
    
    public int getIndex() { return index; }
    
    public void setIndex(int index) { this.index = index; }     
}

Database.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package Data;
 
import java.sql.*;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
 
public class Database {
    
    private static Connection conn = null;
    private static Statement stat = null;
    private static ResultSet res = null;
    
    public static ArrayList<Address> PrintAddress() throws ClassNotFoundException, SQLException
    {
        ArrayList<Address> address = new ArrayList();
    
        try
        {
            Class.forName("org.h2.Driver");
            conn = DriverManager.getConnection("jdbc:h2:~/dbjava/address", "username", "password");
 
            if (conn != null) 
            {                
                stat = conn.createStatement();               
                res = stat.executeQuery("SELECT * FROM Addresses.tAddress");
 
                while (res.next())
                {
                    address.add(new Address(res.getString("Firstname"), res.getString("Lastname"), res.getString("Country"), res.getString("City"), res.getString("Address"), res.getInt("Index")));
                }
            }
        }
        catch (SQLException ex)
        {
            Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
        }
 
        return address; 
    }
    
    public static void InsertAddress(Address address) throws SQLException, ClassNotFoundException
    {        
        stat.executeUpdate("INSERT INTO Addresses.tAddress (Firstname, Lastname, Country, City, Address, Index) "
                         + "VALUES ("
                         + "\"" + address.getFirstname() + "\","
                         + "\"" + address.getLastname() + "\","
                         + "\"" + address.getCountry() + "\","
                         + "\"" + address.getCity() + "\","
                         + "\"" + address.getAddress() + "\","
                         + address.getIndex()
                         + ")");
    }
}
0
 Аватар для AckiyBolt
653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
03.05.2013, 16:31
эм... забавно... вот такое попробуйте

Java
1
2
3
4
5
6
7
8
9
stat.executeUpdate("INSERT INTO Addresses.tAddress (Firstname, Lastname, Country, City, Address, Index) "
        + "VALUES ("
        + "'" + address.getFirstname() + "',"
        + "'" + address.getLastname() + "',"
        + "'" + address.getCountry() + "',"
        + "'" + address.getCity() + "',"
        + "'" + address.getAddress() + "',"
        + address.getIndex()
        + ");");
1
1 / 1 / 1
Регистрация: 05.03.2013
Сообщений: 41
03.05.2013, 16:53  [ТС]
AckiyBolt, Спасибо большое! Всё работает!
0
9 / 9 / 3
Регистрация: 29.05.2011
Сообщений: 74
03.05.2013, 17:53
Попробуй еще так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//что-то там
Address ads = new Address ();
ads.setFirstname("First Name");
ads.setLastname("Last Name");
ads.setIndex(1);
ads.setCountry("Country")
ads.setCity("City");
ads.setAddress("Address");
 
SessionFactory sessionFactory=new Configuration().configure().buildSessionFactory();
Session session= sessionFactory.openSession();
 
session.save(ads)
session.getTransaction().commit();
//что-то там
Добавлено через 1 минуту
Некоторые говорят лучше так.

Лучше не использовать запросы, не знаю правда почему))
0
 Аватар для AckiyBolt
653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
03.05.2013, 18:03
это использование ОРМ. не лучше, иначе. некоторые, видимо, не шарят когда что нужно использовать. в любом случае для обучения сначала нужно колупать тупые запросы

да. а лучше юзать вот это: http://docs.oracle.com/javase/... pared.html
зачем? запросы экранируются от скул инекций. типа более секьюрно
1
9 / 9 / 3
Регистрация: 29.05.2011
Сообщений: 74
03.05.2013, 18:05
Цитата Сообщение от AckiyBolt Посмотреть сообщение
это использование ОРМ. не лучше, иначе. некоторые, видимо, не шарят когда что нужно использовать. в любом случае для обучения сначала нужно колупать тупые запросы

да. а лучше юзать вот это: http://docs.oracle.com/javase/... pared.html
зачем? запросы экранируются от скул инекций. типа более секьюрно
спс, буду знать
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
03.05.2013, 23:07
AckiyBolt, о майн гот, зачем ты научил девушку говнокодить?
0
 Аватар для AckiyBolt
653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
04.05.2013, 03:43
Цитата Сообщение от mutagen Посмотреть сообщение
AckiyBolt, о майн гот, зачем ты научил девушку говнокодить?
а шо не так?
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
04.05.2013, 03:54
допустим в адресе строка
SQL
1
'address'; DROP Addresses.tAddress;
и капец
0
 Аватар для AckiyBolt
653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
04.05.2013, 04:13
Цитата Сообщение от mutagen Посмотреть сообщение
допустим в адресе строка
SQL
1
'address'; DROP Addresses.tAddress;
и капец
ну девушка получила ответ на свой вопрос. а по поводу "допустим" перед тем как критиковать нужно открывать урлы


Цитата Сообщение от AckiyBolt Посмотреть сообщение
это использование ОРМ. не лучше, иначе. некоторые, видимо, не шарят когда что нужно использовать. в любом случае для обучения сначала нужно колупать тупые запросы

да. а лучше юзать вот это: http://docs.oracle.com/javase/... pared.html
зачем? запросы экранируются от скул инекций. типа более секьюрно
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
04.05.2013, 12:14
Цитата Сообщение от AckiyBolt Посмотреть сообщение
а по поводу "допустим" перед тем как критиковать нужно открывать урлы
ага сначала научил как конкатенить, а потом кто там глянет в сложный препаред, когда тут всё так няшно и удобно работает )))

просто если приводить демо по конкату, надо его снабжать сразу же инжектом, чтоб новис сразу озаботился.
ато щя возможно кроме нас эту тему уже никто и не читает
0
9 / 9 / 3
Регистрация: 29.05.2011
Сообщений: 74
04.05.2013, 12:33
Читает, но что-то я ничего не понял
0
 Аватар для AckiyBolt
653 / 402 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
04.05.2013, 14:17
Цитата Сообщение от mutagen Посмотреть сообщение
ага сначала научил как конкатенить, а потом кто там глянет в сложный препаред, когда тут всё так няшно и удобно работает )))

просто если приводить демо по конкату, надо его снабжать сразу же инжектом, чтоб новис сразу озаботился.
ато щя возможно кроме нас эту тему уже никто и не читает
хм. тоже верно. след раз буду сразу посылать учить препаред
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
04.05.2013, 14:42
Цитата Сообщение от DTSHNick Посмотреть сообщение
Читает, но что-то я ничего не понял
там обьединиены 2 sql выражения в адресе, получается чёт типа:
SQL
1
2
INSERT INTO bla.bla .....; 
DROP bla.bla;
и после этого удаляется таблица bla.bla
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.05.2013, 14:42
Помогаю со студенческими работами здесь

Ошибка при добавлении записи в БД
При попытке добавить запись выдает ошибку &quot;Синтаксическая ошибка в запросе. Неполное предложение запроса&quot; ...

Ошибка при добавлении записи
Уже мозг сломал себе и не могу понять почему он в упор отказывается видеть поле IDV... Эти 2 таблицы мастер деталь, и вот я пытаюсь в...

Ошибка при добавлении записи в БД
Здравствуйте, я добавляю запись в БД, первый раз запись добавляется, а вторая нет выходит ошибка &quot;Нарушение ограничения первичного...

Ошибка при добавлении записи
Пишу интерфейс для базы данных автопроката. В Adotable создал lookup-ы. Таблица выводится в dbgrid. Когда через DBnavigator пытаюсь...

Ошибка при добавлении записи
Здравствуйте, нужна консультация! Подключил к проекту в C# базу данных, но при компиляции подключение отсутствует. Из этого не могу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru