Я только учусь писать код на джаве и столкнулся с такой ошибкой. Пытаюсь создать приложение где через сервер добавляю,вывожу список людей серез 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();
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Подскажите пожалуйста как сделать в Scene Builder'e или в Controller'e, динамическое меню
Я только новичок в программировании, прошу, помогите мнеРешил подключить JavaFX, но IntelliJ IDEA упорно не хочет видеть её, уже перепробовал всё, что...
Подскажите почему андроид приложение не меняет значения в бд(mysql)И выдает в логкэт
Мне нужна функция,чтобы считать числа из файла с таким содержанием числа и записать их в массив[][] :