Ошибка при при подключений к базе данных

136
04 декабря 2020, 16:40

Я только учусь писать код на джаве и столкнулся с такой ошибкой. Пытаюсь создать приложение где через сервер добавляю,вывожу список людей серез Mysql. Но выдает эту ошибку

 java.lang.NullPointerException
        at Server.getStudents(Server.java:71)
        at ListStudentsPage.fillData(ListStudentsPage.java:35)
        at ListStudentsPage.<init>(ListStudentsPage.java:20)
        at MainFrame.<init>(MainFrame.java:27)
        at Main.main(Main.java:15)

Класс сервер

import java.net.*;
import java.util.*;
import java.io.*;
import java.sql.*;
public class Server{
private static Connection connection; 
public static void connect(){
    try{
        Class.forName("com.mysql.jdbc.Driver");
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/bitlab", "root", "");
    }catch(Exception e){
        e.printStackTrace();
    }
}
public static void disconnect(){
    try{
        connection.close();
    }catch(Exception e){
        e.printStackTrace();
    }
}

public static void main(String[] args) {
    connect();

    try{
        ServerSocket server = new ServerSocket(1990);
        System.out.println("Waiting for the client...");
        Socket socket = server.accept();
        System.out.println("Client connected");
        ObjectInputStream inStream = new ObjectInputStream(socket.getInputStream());
        PackageData pd = new PackageData();
        while((pd = (PackageData)inStream.readObject())!=null){
            if(pd.getOperationType().equals("ADD")){
                System.out.println(pd.getStudents().toString());
                addStudents(pd.getStudent());
            }else if(pd.getOperationType().equals("ADD")){
            }
        }
    }catch(Exception e){
        e.printStackTrace();
    }
}
public static void addStudents(Students student){
    try{
        Statement statement = connection.createStatement();
        String sql = "INSERT INTO students (id, name, surname, age) VALUES (\""+student.getName()+"\",\""+student.getSurname()+"\",\""+student.getAge()+"\")";
        statement.executeUpdate(sql);
        statement.close();
    }catch(Exception e){
        e.printStackTrace();
    }
}
public static ArrayList<Students> getStudents(){
    ArrayList<Students> student = new ArrayList<Students>();
    try{
        PreparedStatement statement = connection.prepareStatement("Select * from students");
        ResultSet result = statement.executeQuery();
        while(result.next()){
            Long id = result.getLong("id");
            String name = result.getString("name");
            String surname = result.getString("surname");
            int age = result.getInt("age");
            student.add(new Students(id, name, surname, age));
        }
        statement.close();
    }catch(Exception e){
        e.printStackTrace();
    }
    return student;
}
}

Класс вывод студентов

import java.util.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.event.*;
import java.io.*;
public class ListStudentsPage extends Container{
private JButton back;
private JTable table;
private String str []={"id", "name", "surname", "age"};
public ListStudentsPage(){
    setSize(700,500);
    setLayout(null);
    table = new JTable();
    table.setSize(500,300);
    table.setLocation(100,30);
    fillData();
    add(table);
    back = new JButton("Back");
    back.setSize(120,50);
    back.setLocation(290,350);
    add(back);
    back.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
            Main.frame.showMenu();
        }
    });
}
public void fillData(){
    ArrayList<Students> students = Server.getStudents();
    Object val[][] = new Object [students.size()][4];
    for(int i=0; i<students.size(); i++){
        val[i][0] = students.get(i).getId();
        val[i][1] = students.get(i).getName();
        val[i][2] = students.get(i).getSurname();
        val[i][3] = students.get(i).getAge();
    }
    TableModel model = new DefaultTableModel(val, str);
    table.setModel(model);
}
}

МейнФрейм

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
public class MainFrame extends JFrame{
public Menu menu;
public AddStudentsPage add;
public ListStudentsPage list;
public MainFrame(){
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(700,500);
    setTitle("Mini Project");
    setLayout(null);
    setResizable(false);
    menu = new Menu();
    menu.setLocation(0,0);
    add(menu);
    add = new AddStudentsPage();
    add.setLocation(0,0);
    add(add);
    list = new ListStudentsPage();
    list.setLocation(0,0);
    add(list);
    showMenu();
}
public void showMenu(){
    menu.setVisible(true);
    add.setVisible(false);
    list.setVisible(false);
}
public void showAddStudentsPage(){
    menu.setVisible(false);
    add.setVisible(true);
    list.setVisible(false);
}
public void showListStudentsPage(){
    menu.setVisible(false);
    add.setVisible(false);
    list.setVisible(true);
}
}

Майн класс

import java.util.*;
import java.io.*;
import java.net.*;
public class Main{
    public static Socket socket;
    public static ObjectOutputStream outStream;
    public static MainFrame frame;

    public static void main(String[] args) {
        connectToServer();
        frame = new MainFrame();
        frame.setVisible(true);
    //java -classpath mys....bin.jar; Server
    }
    public static void addStudent(Students st){
        PackageData pd = new PackageData();
        pd.setOperationType("ADD");
        pd.setStudent(st);
        try{
            outStream.writeObject(pd);
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    public static void connectToServer(){
        try{
            socket = new Socket("127.0.0.1",1990);
            outStream = new ObjectOutputStream(socket.getOutputStream());
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
READ ALSO
JavaFx Scene Builder динамическое меню

JavaFx Scene Builder динамическое меню

Подскажите пожалуйста как сделать в Scene Builder'e или в Controller'e, динамическое меню

107
Проблема с подключением JavaFX

Проблема с подключением JavaFX

Я только новичок в программировании, прошу, помогите мнеРешил подключить JavaFX, но IntelliJ IDEA упорно не хочет видеть её, уже перепробовал всё, что...

113
андроид приложение не меняет значения в бд

андроид приложение не меняет значения в бд

Подскажите почему андроид приложение не меняет значения в бд(mysql)И выдает в логкэт

101
Мне нужна функция,чтобы считать числа из файла c текстом и записать их в массив[][]

Мне нужна функция,чтобы считать числа из файла c текстом и записать их в массив[][]

Мне нужна функция,чтобы считать числа из файла с таким содержанием числа и записать их в массив[][] :

126