Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
3 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 189
1

Ввод даты с консоли в БД PostgreSQL (JDBS). Конфликт java.util.Date и java.sql.Date

02.05.2019, 19:28. Показов 2304. Ответов 6
Метки нет (Все метки)

Народ. Добрый вечер.

Создаю базу библиотеки (учебная), есть такая таблица
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private static void initBooksDB() throws SQLException {
        Statement st = connection.createStatement();
        try {
            st.execute("DROP TABLE IF EXISTS Books");
            st.execute("CREATE TABLE Books(" +
                    "id_book INT NOT NULL, " +
                    "title VARCHAR (30) NOT NULL, " +
                    "author VARCHAR (20)NOT NULL, " +
                    "published DATE  NOT NULL, " + 
                     "stock INT NOT NULL )");
        } finally {
            st.close();
        }
    }
при вводе данных с использованием Scanner
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
private static void addBook() throws SQLException {
        System.out.println("Enter id_book.");
        String sId = sc.nextLine();
        int id_book = Integer.parseInt(sId);
 
        System.out.println("Enter title book.");
        String title = sc.nextLine();
 
        System.out.println("Enter author book.");
        String author = sc.nextLine();
 
        System.out.println("Enter published date book.");
        String sDate = sc.nextLine();
        // int date = Integer.parseInt(sDate);
 
        try {
            Date date = new SimpleDateFormat("dd/MM/yyyy").parse(sDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
 
        System.out.println("Enter  stock book.");
        String sStock = sc.nextLine();
        int stock = Integer.parseInt(sStock);
 
 
        try (PreparedStatement ps = connection.prepareStatement
                ("INSERT INTO Books (id_book, title, author, published, stock) VALUES (?,?,?,?,?)")) {
 
            ps.setInt(1, id_book);
            ps.setString(2, title);
            ps.setString(3, author);
            ps.setInt(4, date); // не видит дату !!!!!!!!!!!!!!
            ps.setInt(5, stock);
 
            ps.executeUpdate();
        }
    }
получаю ошибку
Java
1
java.util.Date cannot be cast to java.sql.Date
.
Какой должен быть првильный код для addBook() ?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.05.2019, 19:28
Ответы с готовыми решениями:

Конвертация из java.util.Date в java.sql.Date sqlDate - уменьшает число
Вот метод, который конвертирует дату из формата java.util.Date в формат java.sql.Date sqlDate ...

Перевод java.sql.date -> java.util.date?
Перевод java.sql.date -> java.util.date?

Беда какая-то Mac OS-Citrix(на NT)-java.util.Date :(
Проблема в следующем, есть приложение которое работает на NT сервере на нем же установлен Citrix...

Ошибка: cannot find symbol symbol: class toString location: class java.util.Date
import java.util.Date; import java.lang.String; import java.io.*; public class Sword { ...

6
Йуный падаван
Эксперт PythonЭксперт Java
8797 / 5200 / 1791
Регистрация: 21.10.2017
Сообщений: 13,995
02.05.2019, 19:41 2
Сергей_СПб, используй LocalDate
0
3 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 189
02.05.2019, 19:51  [ТС] 3
Привет!
Можно сам код. Пробовал по разному - не молучается

Добавлено через 4 минуты
Да и в исходнике ощибка
ps.setDate(4, date); // не видит дату !!!!!!!!!!!!!!
но смысл тот-же
0
Эксперт Java
3866 / 2486 / 447
Регистрация: 28.04.2012
Сообщений: 8,165
02.05.2019, 20:35 4
Цитата Сообщение от Сергей_СПб Посмотреть сообщение
не видит дату
Потому что твоя дата кончилась вот

Java
1
2
3
4
try {
    Date date = new SimpleDateFormat("dd/MM/yyyy").parse(sDate);
} // здесь
catch (ParseException e) {
0
3 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 189
02.05.2019, 21:16  [ТС] 5
Все он видит. Увидел - пардон.

но .ClassCastException: java.util.Date cannot be cast to java.sql.Date остается

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
package JDBC_task.task2.Training;
 
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.sql.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Scanner;
 
/*
* У нас есть книжная библиотека и люди. Также есть специальная таблица для учета выданных книг.
В таблице "books" хранится информация о заголовке, авторе, дате публикации и наличии книги. Все просто.
В таблице “members” — имена и фамилии всех записавшихся в библиотеку людей.
В таблице “borrowings” хранится информация о взятых из библиотеки книгах. Колонка bookid относится к
идентификатору взятой книги в таблице “books”, а колонка memberid относится к соответствующему человеку
из таблицы “members”. У нас также есть дата выдачи и дата, когда книгу нужно вернуть.
*/
public class ABeginnersGuideToSQL {
 
    private static final String DB_CONNECTION = "jdbc:postgresql://localhost:5432/ABeginnersGuideToSQL";
    private static final String DB_USER = "postgres";
    private static final String DB_PASSWORD = "postgres";
 
    private static Connection connection;
    private static Scanner sc;
 
 
    public static void main(String[] args) {
 
        sc = new Scanner(System.in);
 
        try (Connection conn = DriverManager.getConnection
                (DB_CONNECTION, DB_USER, DB_PASSWORD)) {
            connection = conn;
 
            initBooksDB();
            initMembersDB();
            initBorrowingsDB();
            while (true) {
                showMenu();
 
                String s = sc.nextLine();
 
                switch (s) {
                    case "1":
                        addBook();
                        break;
 
                    case "2":
                        addMember();
                        break;
 
                    case "3":
                        addBorrowing();
                        break;
 
                }
 
            }
 
 
        } catch (SQLException | ParseException e) {
            e.printStackTrace();
        }
    }
 
    private static void addBook() throws SQLException, ParseException {
        System.out.println("Enter id_book.");
        String sId = sc.nextLine();
        int id_book = Integer.parseInt(sId);
 
        System.out.println("Enter title book.");
        String title = sc.nextLine();
 
        System.out.println("Enter author book.");
        String author = sc.nextLine();
 
        System.out.println("Enter published date book.");
        String sDate = sc.nextLine();
 
 
            Date date = (Date) new SimpleDateFormat("dd/MM/YYYY").parse(sDate);
 
 
 
        System.out.println("Enter  stock book.");
        String sStock = sc.nextLine();
        int stock = Integer.parseInt(sStock);
 
 
        try (PreparedStatement ps = connection.prepareStatement
                ("INSERT INTO Books (id_book, title, author, published, stock) VALUES (?,?,?,?,?)")) {
 
            ps.setInt(1, id_book);
            ps.setString(2, title);
            ps.setString(3, author);
            ps.setDate(4, date);
            ps.setInt(5, stock);
 
            ps.executeUpdate();
        }
    }
 
    private static void addMember() throws SQLException {
 
        System.out.println("Enter Member.");
        String sIdM = sc.nextLine();
        int id_member = Integer.parseInt(sIdM);
 
        System.out.println("Enter first name client.");
        String firstName = sc.nextLine();
 
        System.out.println("Enter last name client.");
        String lastName = sc.nextLine();
 
        try (PreparedStatement ps = connection.prepareStatement(
                "INSERT INTO Members (id_member, firstName, lastName) VALUES (?,?,?) "
        )) {
            ps.setInt(1, id_member);
            ps.setString(2, firstName);
            ps.setString(3, lastName);
 
            ps.executeUpdate();
        }
    }
 
    private static void addBorrowing() {
 
    }
 
    private static void initBooksDB() throws SQLException {
        Statement st = connection.createStatement();
        try {
            st.execute("DROP TABLE IF EXISTS Books");
            st.execute("CREATE TABLE Books(" +
                    "id_book INT NOT NULL, " +
                    "title VARCHAR (30) NOT NULL, " +
                    "author VARCHAR (20)NOT NULL, " +
                    // "published DATE  NOT NULL, " +  // Покажите как правильно
                    "published DATE NOT NULL, " +
                    "stock INT NOT NULL )");
        } finally {
            st.close();
        }
    }
 
    private static void initMembersDB() throws SQLException {
        Statement st = connection.createStatement();
        try {
            st.execute("DROP TABLE IF EXISTS Members");
            st.execute("CREATE TABLE Members(" +
                    "id_member INT NOT NULL, " +
                    "firstName VARCHAR (30) NOT NULL, " +
                    "lastName VARCHAR (30) NOT NULL )");
        } finally {
            st.close();
        }
    }
 
    private static void initBorrowingsDB() throws SQLException {
        Statement st = connection.createStatement();
        try {
            st.execute("DROP TABLE IF EXISTS Borrowings");
            st.execute("CREATE TABLE Borrowings(" +
                    "id SERIAL NOT NULL PRIMARY KEY, " +
                    "id_book INT NOT NULL, " +
                    "id_member INT NOT NULL, " +
                    "borrowDate DATE NOT NULL, " +
                    "returnDate DATE NOT NULL)");
        } finally {
            st.close();
        }
    }
 
    private static void showMenu() {
        System.out.println("1 - add book");
        System.out.println("2 - add clientMember");
        System.out.println("3 - add orderBorrowing");
    }
 
 
}
0
Эксперт Java
3866 / 2486 / 447
Регистрация: 28.04.2012
Сообщений: 8,165
02.05.2019, 22:24 6
Цитата Сообщение от Сергей_СПб Посмотреть сообщение
но .ClassCastException: java.util.Date cannot be cast to java.sql.Date остается
http://lmgtfy.com/?q=java.util... a.sql.Date
0
3 / 3 / 1
Регистрация: 13.12.2017
Сообщений: 189
05.05.2019, 23:45  [ТС] 7
Все просто
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
private static void addBook() throws SQLException, ParseException {
        System.out.println("Enter id_book.");
        String sId = sc.nextLine();
        int id_book = Integer.parseInt(sId);
 
        System.out.println("Enter title book.");
        String title = sc.nextLine();
 
        System.out.println("Enter author book.");
        String author = sc.nextLine();
 
        System.out.println("Enter published date book.");
        String sDate = sc.nextLine();
        java.util.Date date = new SimpleDateFormat("YYYY-MM-DD").parse(sDate);
        Date dataTime = new java.sql.Date(date.getTime());
 
 
        System.out.println("Enter  stock book.");
        String sStock = sc.nextLine();
        int stock = Integer.parseInt(sStock);
 
 
        try (PreparedStatement ps = connection.prepareStatement
                ("INSERT INTO Books (id_book, title, author, published, stock) VALUES (?,?,?,?,?)")) {
 
            ps.setInt(1, id_book);
            ps.setString(2, title);
            ps.setString(3, author);
            ps.setDate(4, (java.sql.Date) dataTime);
            ps.setInt(5, stock);
 
            ps.executeUpdate();
        }
    }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2019, 23:45

Как перевести строку типа 20010920 в java.sql.Date ?? - не пойму я
Очень надо. А я не пойму никак из документации ничего. Заранее благодарен.

Ошибка reference to List is ambiguous; both interface java.util.List in package java.util and class java.awt.List in...
Почему кгда я загружаю пакеты awt, utill вместе в одной проге при обьявлении елемента List я ловлю...

Ввод даты в поле Date
Здравствуйте, пожалуйста подскажите как можно чтобы в делфи по нажатию на клавишу писало в поле...

Java.util.concurrent.* или java.util.Stream
Как добавить библиотеку java.util.concurrent или java.util.Stream? Прошу, пожалуйста, помочь....


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

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

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