Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Java и базы данных

Войти
Регистрация
Восстановить пароль
 
yulia230597
0 / 0 / 0
Регистрация: 17.11.2016
Сообщений: 2
#1

Ошибка в коде - Java БД

17.11.2016, 13:36. Просмотров 305. Ответов 2
Метки нет (Все метки)

Добрый день! Прошу помочь найти ошибку в приложении, обеспечивающим доступ к данным.
Для отображения данных таблицы Doctors (Врачи) используется список List. В ComboBox отображается список идентификаторов врачей, далее значения полей таблицы не отображаются в текстовых полях формы. Выдает сообщение об ошибке "Неизвестный синтаксис около конструкции ".".
Имеется класс Doctors, использующийся для передачи по обработке данных о докторе.

Класс DoctorsJDBC получает соединение с базой, выполняет операции выборки, создания, обновления, удаления данных.
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
import java.sql.*;
import java.util.*;
 
public class DoctorsJDBC {
    private static Connection con = null;
    private static String username = "sa";
    private static String password = "vluki-1";
    private static String URL = "jdbc:sqlserver://127.0.0.1:1433";
    
public DoctorsJDBC() {
           }
private java.sql.Connection getConnection() throws SQLException {
    //Загружаем драйвер
    
    con = DriverManager.getConnection(URL,username,password);
    //соединяемся
    if(con!=null){
        System.out.println("Соединение успешно выполнено");
    }else{
        System.out.println("Соединение не установлено");
        System.exit(0);
    }
    return con;
}
//Возвращаем список идентификаторов врачей
    public List<Integer>getDoctorsIds() throws SQLException{
        List<Integer>doctorsIds = new ArrayList<Integer>();
        //Получение соединения с БД
        Connection con=getConnection();
//Выполнение SQL-запроса
        ResultSet rs=con.createStatement().executeQuery("Select id_doctor From DB_Shibakova.dbo.doctors");
//Перечисляем результаты выборки
                 while(rs.next()) {
//Из каждой строки выборки выбираем результат и помещаем его в коллекцию
                 doctorsIds.add(rs.getInt(1));
                 }
//Закрываем выборку и соединение с БД
        rs.close();
        con.close();
        return doctorsIds;
}
//Возвращаем врача по идентификатору
 
    public List<Doctors>getDoctorsId_doctor(int id_doctor) throws SQLException {
        List<Doctors>doctors = new ArrayList<Doctors>();
//Получение соединения с БД
        Connection con = getConnection();
//Подготовка SQL-запроса
        PreparedStatement st=con.prepareStatement("Select surname, name, middle_name, specialty, cost_acceptance" + "From DB_Shibakova.dbo.doctors"+"Where id_doctor=?");
//Указание значений параметорв запроса
        st.setInt(1,id_doctor);
//Выполнение запроса
        ResultSet rs = st.executeQuery();
        Doctors doctor = null;
//Перечисляем результаты выборки
        while (rs.next()) {
//из каждой строки выборки выбираем результаты,
//формирует новый объект Doctors            
//и помещаем его в коллекцию
            doctor = new Doctors(
                    id_doctor,
                    rs.getString(1),
                    rs.getString(2),
                    rs.getString(3),
                    rs.getString(4),
                    rs.getFloat(5));
            doctors.add(doctor);
        }
//закрываем выборку и соединение с БД
        rs.close();
        con.close();
        return doctors;
        }
//Добавление нового врача
    
    public void addDoctors(Doctors doctors) throws SQLException {
        Connection con = getConnection();
        PreparedStatement st=con.prepareStatement("Insert into DB_Shibakova.dbo.doctors "+"(id_doctor, surname, name, middle_name, specialty, cost_acceptance)"+"values(?,?,?,?,?,?)");
        st.setInt(1,doctors.getId_doctor());
        st.setString(2,doctors.getSurname());
        st.setString(3,doctors.getName());
        st.setString(4,doctors.getMiddle_name());
        st.setString(5,doctors.getSpecialty());
        st.setFloat(6,doctors.getCost_acceptance());
        
        st.executeUpdate();
        con.close();
}
    
//Обновление данных о враче
    
public void setDoctors (Doctors doctors) throws SQLException {
    Connection con = getConnection();
    PreparedStatement st=con.prepareStatement("Update DB_Shibakova.dbo.doctors "+"Set surname=?, name=?, middle_name=?, specialty=?, cost_acceptance=? "+"Where id_doctor=? ");
    st.setString(1,doctors.getSurname());
    st.setString(2,doctors.getName());
    st.setString(3,doctors.getMiddle_name());
    st.setString(4,doctors.getSpecialty());
    st.setFloat(5,doctors.getCost_acceptance());
    st.setInt(6,doctors.getId_doctor());
    
    st.executeUpdate();
    con.close();
}
//Удаление записи
 
public void removeDoctors (int id_doctor) throws SQLException {
    Connection con = getConnection();
    PreparedStatement st=con.prepareStatement("Delete from DB_Shibakova.dbo.doctors "+"Where id_doctor=?");
    st.setInt(1,id_doctor);
    st.executeUpdate();
    con.close();
}
}
Класс DoctorsinfoClient содержит список для выбора доктора по идентификатору и полей, отображающих по выбранному врачу.

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
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
import java.awt.EventQueue;
import java.util.*;
import javax.swing.*;
import javax.swing.JComboBox;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Font;
import java.awt.GridLayout;
 
 
public class DoctorsinfoClient extends JDialog {
 
    //Создаем объект doctorsJDBC
    private static final long serialVersionUID=1L;
    DoctorsJDBC doctorsJDBC = new DoctorsJDBC();
    //Объявление элементов управления
         private JLabel lbSelectId_doctor=new JLabel("Выбор доктора по Id_doctor");
         private JLabel lbId_doctor=new JLabel("Id_doctor");
         private JLabel lbSurname=new JLabel("Фамилия");
         private JLabel lbName=new JLabel("Имя");
         private JLabel lbMiddle_name=new JLabel("Отчество");
         private JLabel lbSpecialty=new JLabel("Специальность");
         private JLabel lbCost_acceptance=new JLabel("Стоимость приема");
         
         private JComboBox comboId_doctor=new JComboBox();
         private JTextField txtId_doctor=new JTextField();
         private JTextField txtSurname=new JTextField();
         private JTextField txtName=new JTextField();
         private JTextField txtMiddle_name=new JTextField();
         private JTextField txtSpecialty=new JTextField();
         private JTextField txtCost_acceptance=new JTextField();
         
         private JButton btnAdd=new JButton("Добавить");
         private JButton btnUpdate=new JButton("Обновить");
         private JButton btnRemove=new JButton("Удалить");
         private JButton btnClear=new JButton("Очистить");
         
         public DoctorsinfoClient() {
         this.setTitle("Информация о врачах");
         
this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
         this.setLayout(new GridLayout(11,2));
         this.setBounds(100, 50, 400, 300);
         
         //Добавление элементов управления в диалог
         this.add(lbSelectId_doctor);
         this.add(comboId_doctor);
         this.add(lbId_doctor);
         this.add(txtId_doctor);
         this.add(lbSurname);
         this.add(txtSurname);
         this.add(lbName);
         this.add(txtName);
         this.add(lbMiddle_name);
         this.add(txtMiddle_name);
         this.add(lbSpecialty);
         this.add(txtSpecialty);
         this.add(lbCost_acceptance);
         this.add(txtCost_acceptance);
         this.add(btnAdd);
         this.add(btnUpdate);
         this.add(btnRemove);
         this.add(btnClear);
         
         //Описание обработчиков событий
                   comboId_doctor.addActionListener(new ActionListener() {
                       public void actionPerformed(ActionEvent e)
              {     
                           showDoctorsData();
                       }
                 });
                    
                 btnAdd.addActionListener(new ActionListener() {
                     public void actionPerformed(ActionEvent e)  
{                    
                            addDoctors();
                       }
                 });
                 
                 btnUpdate.addActionListener(new ActionListener() {
                     public void actionPerformed(ActionEvent e)  
{                    
                            updateDoctors();
                       }
                 });
                 
                 btnRemove.addActionListener(new ActionListener() {
                     public void actionPerformed(ActionEvent e)  
{
                            removeDoctors();
                       }
                 });
                 
                 btnClear.addActionListener(new ActionListener() {
                     public void actionPerformed(ActionEvent e)  
{
                            clearDoctorsInfo();
                       }
                 });
                 
                 //Обновляем список идентификаторов врачей
                 refreshId_doctorList();
                 
                 //Отображаем диалог на экране
                 this.setVisible(true);
}
 
       //Считываем список идентификаторов врачей
       // и заполняем список
       private void refreshId_doctorList() {
       try {
             //Получаем список идентификаторов
             List <Integer> doctorsIds = doctorsJDBC.getDoctorsIds();
             //Очищаем список
             comboId_doctor.removeAllItems();
             //Заполняем список полученными данными
             for (Integer doctorsId_doctor: doctorsIds) {
                 comboId_doctor.addItem(doctorsId_doctor);
             }
       } catch (Exception e) {
             e.printStackTrace();
             JOptionPane.showMessageDialog(this, e.getMessage());
       }
       }
       
       //Отображаем данные о враче по
       //выбранному в списке идентификатору
       
       protected void showDoctorsData() {
             try {
                   //Забираем значение, выбранное в списке
                   //идентификатором врачей
                 
                   Integer doctorsId_doctor=(Integer)comboId_doctor.getSelectedItem();
                   if (doctorsId_doctor !=null) {
                         //Получаем врача по идентификатору
                         List<Doctors>doctors=doctorsJDBC.getDoctorsId_doctor(doctorsId_doctor);
                         
                         //Заполняем текстовые поля значениями
                         //параметров врача
                         for (int i=0; i<doctors.size(); i++) {
        txtId_doctor.setText(String.valueOf(doctors.get(i).getId_doctor())); 
        txtSurname.setText(doctors.get(i).getSurname()); 
        txtName.setText(doctors.get(i).getName()); 
        txtMiddle_name.setText(doctors.get(i).getMiddle_name()); 
        txtSpecialty.setText(doctors.get(i).getSpecialty()); 
        txtCost_acceptance.setText(String.valueOf(doctors.get(i).getCost_acceptance())); 
                         }
                   }
             } catch (Exception e) {
                   e.printStackTrace();
                   JOptionPane.showMessageDialog(this, e.getMessage());
                  }
                  }
                   
                  //добавляем нового врача на основе
                  //данных текстовых полей
       
                  protected void addDoctors() {
                      try {
                          //создаем новый объект-врач
                          //на основе данных диалога
                          Doctors doctors = new Doctors (
                                  Integer.parseInt(txtId_doctor.getText()),
                                  txtSurname.getText(),
                                  txtName.getText(),
                                  txtMiddle_name.getText(),
                                  txtSpecialty.getText(),
                                  Float.parseFloat(txtCost_acceptance.getText()));
 
                          //Сохраняем врача в БД
                          doctorsJDBC.addDoctors(doctors);
                          
                          //Обновляем список идентификаторов
                          refreshId_doctorList();
                          
                          //Устанавливаем текущего добавленного врача
                          
                          comboId_doctor.setSelectedItem(
                                  Integer.parseInt(txtId_doctor.getText()));
                
                      } catch (Exception e) {
                          e.printStackTrace();
                          JOptionPane.showMessageDialog(this,
e.getMessage());
                      }
                  }
                  
                  //Обновляем информацию о враче на основе
                  //данных текстовых полей
                  
                  protected void updateDoctors() {
                      try {
                            //формируем объект-врач
                            //на основе данных диалога
                            Doctors doctors=new Doctors (
                                  Integer.parseInt(txtId_doctor.getText()),
                                  txtSurname.getText(),
                                  txtName.getText(),
                                  txtMiddle_name.getText(),
                                  txtSpecialty.getText(),
                                  Float.parseFloat(txtCost_acceptance.getText()));
                            
                            //Обновляем данные о враче в БД
                            doctorsJDBC.setDoctors(doctors);
                            
                            
                      } catch (Exception e) {
                            e.printStackTrace();
                            JOptionPane.showMessageDialog(this,
e.getMessage());                                    
                      }
                  }
                      
                      //Удаляем выбранного врача
                      
                      protected void removeDoctors() {
                          try {
                                // удаляем врача из БД
                                doctorsJDBC.removeDoctors(
                                Integer.parseInt(txtId_doctor.getText()));
                                //Обновляем список идентификаторов врачей 
                                refreshId_doctorList();
                                //Отображаем данные по первому врачу в списке
                                showDoctorsData();
                          } catch (Exception e) {
                              e.printStackTrace();
                              JOptionPane.showMessageDialog(this,
e.getMessage());
                          }
                      }
                      //Очищаем данные в текстовых полях
                      
                      protected void clearDoctorsInfo() {
                          try {
                              txtId_doctor.setText("");
                              txtSurname.setText("");
                              txtName.setText("");
                              txtMiddle_name.setText("");
                              txtSpecialty.setText("");
                              txtCost_acceptance.setText("");
                     } catch (Exception e) {
                              e.printStackTrace();
                              JOptionPane.showMessageDialog(this,
e.getMessage());
                          }
                      }
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2016, 13:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в коде (Java БД):

Ошибка в коде - Java
Всем привет, я только начинаю программировать на Java, столкнулся с проблемой, &quot;Собака не гавкает&quot; помогите кто чем может. Вот код: ...

Ошибка в коде - Java
Ребята столкнулся с такой ошибкой - Fatal error: Constructor Log::log() cannot be static in...

Ошибка в коде Java - Java
IDEA выдает ошибки : Error:(1, 1) java: illegal character: '\ufeff' и Error:(1, 10) java: class, interface, or enum expected, как исправить?

Ошибка в коде потока. Что делать? - Java
class MyThread extends Thread { @Override public void run() { System.out.println(&quot;Thread is running&quot;); } ...

Ошибка в байт-коде файла .class - Java
Здравствуйте! Я пытаюсь разобраться в структуре .class файлов. В одном из файлов в constant_pool указано число 21(то есть всего 20...

Не могу понять в где ошибка в Java коде - Java
Помогите пожалуйста. изучаю Java по книге там такой код. //Использование цыкла do-while для выбора пункта меню class Menu { ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
yulia230597
0 / 0 / 0
Регистрация: 17.11.2016
Сообщений: 2
17.11.2016, 13:41  [ТС] #2
Класс Doctors, использующийся для передачи по обработке данных о докторе.
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
public class Doctors 
{
private int id_doctor;
private String surname;
private String name;
private String middle_name;
private String specialty;
private float cost_acceptance;
 
public Doctors(int id_doctor, String surname, String name, String middle_name, String specialty, float cost_acceptance)
 
{
    this.setId_doctor(id_doctor);
    this.setSurname(surname);
    this.setName(name);
    this.setMiddle_name(middle_name);
    this.setSpecialty(specialty);
    this.setCost_acceptance(cost_acceptance);
}
 
 
 
public int getId_doctor() {
    return id_doctor;
}
 
public void setId_doctor(int id_doctor) {
    this.id_doctor=id_doctor;
}
 
 
 
public String getSurname() {
    return surname;
}
 
public void setSurname(String surname) {
    this.surname=surname;
}
 
 
 
public String getName() {
    return name;
}
 
public void setName(String name) {
    this.name=name;
}
 
 
 
public String getMiddle_name() {
    return middle_name;
}
 
public void setMiddle_name(String middle_name) {
    this.middle_name=middle_name;
}
 
 
 
public String getSpecialty() {
    return specialty;
}
 
public void setSpecialty(String specialty) {
    this.specialty=specialty;
}
 
 
 
public float getCost_acceptance() {
    return cost_acceptance;
}
 
public void setCost_acceptance(float cost_acceptance) {
    this.cost_acceptance=cost_acceptance;
}
 
 
 
}

Ошибка в коде
0
Play45
0 / 0 / 0
Регистрация: 19.11.2016
Сообщений: 1
19.11.2016, 22:08 #3
Ваша ошибка в методе getDoctorsId_doctor(int id_doctor) класса DoctorsJDBC вот здесь:
Кликните здесь для просмотра всего текста
Java
1
2
//Подготовка SQL-запроса
        PreparedStatement st=con.prepareStatement("Select surname, name, middle_name, specialty, cost_acceptance" + "From DB_Shibakova.dbo.doctors"+"Where id_doctor=?");

При объединении (конкатенации) строк получается не валидный запрос, к примеру если id_doctor=10, то получится запрос:
Кликните здесь для просмотра всего текста
"Select surname, name, middle_name, specialty, cost_acceptanceFrom DB_Shibakova.dbo.doctorsWhere id_doctor=10"

Красным выделены места где не хватает пробелов, правильный код запроса следующий:
Кликните здесь для просмотра всего текста
Java
1
2
//Подготовка SQL-запроса
        PreparedStatement st=con.prepareStatement("Select surname, name, middle_name, specialty, cost_acceptance" + " From DB_Shibakova.dbo.doctors"+" Where id_doctor=?");
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2016, 22:08
Привет! Вот еще темы с ответами:

Не могу найти в коде бесконечный цикл (Если таковой в коде имеется.) - Java
/** * Created by Drath on 04.08.14. */ var mygram = { words: , unfixed: {}, answerNum: -1, me: this, ...

Ошибка в коде взаимодействия клиента и сервера на основе протокола TCP/IP (ошибка в коде) - C++ Builder
Задание: Осуществить взаимодействие клиента и сервера на основе протокола TCP/IP. Реализовать параллельное соединение с использованием...

Ошибка с графикой в приложении Windows form (ошибка не в коде!) - C++/CLI WinForms
Всем доброго времени суток! Написал программу в windows form. Несколько раз скомпилировал и все хорошо. Сейчас попробовал снова запустить...

Ошибка в коде (Ошибка сегментирования (core dumped) - C++
Добрый день. Подскажите пожалуйста, где ошибка в коде? char ch; string s; while ((ch = cin.get()) != '0' ) ...


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

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

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