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

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

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

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

17.11.2016, 13:36. Просмотров 301. Ответов 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());
                          }
                      }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2016, 13:36     Ошибка в коде
Посмотрите здесь:

Ошибка в коде , ошибка 200 - Pascal
Всем привет, помогите пожалуйста, я новичек в Паскале, вот программа, суть её переводить любое число в любую систему исчесления, но вот...

.NET 4.x Ошибка в коде - C# ASP.NET
Вообщем занимался написанием скрипта для работы с базой данных, библиотека mysql connector, есть 2 действия которые изменяют данные в...

ошибка в коде - C++
День добрый. Есть код (не рабочий): #include&lt;iostream&gt; using namespace std; int main() { float n=0.5; ...

Ошибка в коде - C#
Создаю матрицу из кодового слова, применяю метод перебора (Main2()) столбцов этой матрицы, но Main2() почему то ничего не возвращает. ...

Ошибка в коде - JavaScript
Добрый день! Есть пример кода: HTML-код: &lt;section class=&quot;container&quot;&gt; &lt;h1&gt;Ограничиваем сектор поиска в подсказках по...

Ошибка в коде (С++) - C++
DEV C++ не конпилирует из-за ошибки или ошибок в коде. Не могу найти ошибку. Помогите пожалуйта! Спасибо! #include &lt;iostream.h&gt; ...

Ошибка в коде - PHP БД
При нажатии на ссылки переменная id не сотворятся из за этого не выводится форма, помогите пожалуйста найти причину. Код ...

Ошибка в коде - C++
Что это за конченый Джини???

Ошибка в коде? - C++
добрый вечер! есть задача: в массиве размерностью более трех найти три наименьших элемента и их номера. код программы: #include...

Ошибка в коде - Программирование Android
public class MainActivity extends AppCompatActivity { private int r; private int g; private int b; private...

Ошибка в коде - Assembler
Резидент, перехватывает нажатие клавиши, анализирует полученный код, сигнализирует в случае соответствия заданному критерию. Вызов функции...

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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;
}
 
 
 
}

Ошибка в коде
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=?");
Ответ Создать тему
Опции темы

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