Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java и базы данных
Войти
Регистрация
Восстановить пароль
 
rviktoria
1 / 1 / 1
Регистрация: 05.03.2013
Сообщений: 41
#1

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

03.05.2013, 14:54. Просмотров 1016. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2013, 14:54
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка при добавлении записи в БД (Java БД):

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

Ошибка при добавлении меню
Здравствуйте, кто то может подсказать. Код игры работает нормально, если нет меню (единственное если не ввести число в нужном месте когда...

PostgreSQL - Ошибка при вставке записи (связь many-to-many)
Параметры подключения к БД следующие: jdbc.driverClassName=org.postgresql.Driver jdbc.url=jdbc:postgresql://localhost:5432/app ...

NullPointerException при добавлении объекта в ArrayList
Здравствуйте! Проблема в том, что при добавлении объекта в список ArrayList, моя программа выдаёт java.lang.NullPointerException. Код...

Не компилируется Maven proj при добавлении ojdbc
Знакомлюсь со spring. Пытаюсь создать подключение к oracle db. Вылетает ошибка ...

innerHTML как сделать чтобы неочищал поля в диве при добавлении нового
document.getElementById('add_form').innerHTML += "<input type=text name=text>"; таким способом создаю несколько текстовых полей при клике...

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

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
rviktoria
1 / 1 / 1
Регистрация: 05.03.2013
Сообщений: 41
03.05.2013, 16:22  [ТС] #3
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","Address 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
649 / 398 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
03.05.2013, 16:31 #4
эм... забавно... вот такое попробуйте

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
rviktoria
1 / 1 / 1
Регистрация: 05.03.2013
Сообщений: 41
03.05.2013, 16:53  [ТС] #5
AckiyBolt, Спасибо большое! Всё работает!
0
DTSHNick
9 / 9 / 3
Регистрация: 29.05.2011
Сообщений: 74
03.05.2013, 17:53 #6
Попробуй еще так:
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
649 / 398 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
03.05.2013, 18:03 #7
это использование ОРМ. не лучше, иначе. некоторые, видимо, не шарят когда что нужно использовать. в любом случае для обучения сначала нужно колупать тупые запросы

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

да. а лучше юзать вот это: http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
зачем? запросы экранируются от скул инекций. типа более секьюрно
спс, буду знать
0
mutagen
2564 / 2237 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
03.05.2013, 23:07 #9
AckiyBolt, о майн гот, зачем ты научил девушку говнокодить?
0
AckiyBolt
649 / 398 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
04.05.2013, 03:43 #10
Цитата Сообщение от mutagen Посмотреть сообщение
AckiyBolt, о майн гот, зачем ты научил девушку говнокодить?
а шо не так?
0
mutagen
2564 / 2237 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
04.05.2013, 03:54 #11
допустим в адресе строка
SQL
1
'address'; DROP Addresses.tAddress;
и капец
0
AckiyBolt
649 / 398 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
04.05.2013, 04:13 #12
Цитата Сообщение от mutagen Посмотреть сообщение
допустим в адресе строка
SQL
1
'address'; DROP Addresses.tAddress;
и капец
ну девушка получила ответ на свой вопрос. а по поводу "допустим" перед тем как критиковать нужно открывать урлы


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

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

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

просто если приводить демо по конкату, надо его снабжать сразу же инжектом, чтоб новис сразу озаботился.
ато щя возможно кроме нас эту тему уже никто и не читает
хм. тоже верно. след раз буду сразу посылать учить препаред
0
mutagen
2564 / 2237 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
04.05.2013, 14:42 #16
Цитата Сообщение от DTSHNick Посмотреть сообщение
Читает, но что-то я ничего не понял
там обьединиены 2 sql выражения в адресе, получается чёт типа:
SQL
1
2
INSERT INTO bla.bla .....; 
DROP bla.bla;
и после этого удаляется таблица bla.bla
0
04.05.2013, 14:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2013, 14:42
Привет! Вот еще темы с решениями:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru