Вопрос какие у меня проблемы с архитектурой и вообще по синтаксису. И как передать можно данные от сервера клиенту, сразу списком? Или киньте ссылки где знания подкрепить. В таблице три поля Name, Number, Money. Number-primary key.
Сервер:
public class Server implements Runnable{
Socket connection;
String input;
DbHelper dbHelper = new DbHelper();
List<Integer> list = new ArrayList<>();
public Server(Socket socket){
this.connection = socket;
}
public static void main(String[] args) throws IOException {
System.out.println("Welcome to Server!");
int i=1;
ServerSocket servers = null;
try{
servers = new ServerSocket(4444);
}catch(IOException e){
System.out.println("Can't connect to port");
System.exit(-1);
}
//Ждем подключения клиента, запускаем поток на каждое подключение
while(true){
try{
System.out.println("Waiting for a client...");
Socket connection = servers.accept();
Runnable runnable = new Server(connection);
Thread thread = new Thread(runnable);
thread.start();
System.out.println("Client connected");
}catch(IOException e){
System.out.println("");
System.exit(-1);
}
}
}
@Override
public void run() {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
PrintWriter out = new PrintWriter(new OutputStreamWriter(connection.getOutputStream()), true);
System.out.println("Waiting for messages...");
try {
if ((input = in.readLine()) != null) {
System.out.println("S: " + input);
List<AccountpayE> result = dbHelper.readAccount(Integer.parseInt(input));
for (AccountpayE accountpayEnt : result) {
out.println(accountpayEnt.getName());
out.println(accountpayEnt.getMoney());
}
List<AccountpayE> result1 = dbHelper.payAccount(Integer.parseInt(input));
for (AccountpayE accountpayEnt : result1) {
out.println(accountpayEnt.getNumber());
out.println(accountpayEnt.getMoney());
}
}
for (int i = 0; i < 3; i++) {
if ((input = in.readLine()) != null) {
list.add(Integer.parseInt(input));
System.out.println(list.get(i));
}
}
dbHelper.incertAccount(list.get(0),list.get(1),list.get(2));
List<AccountpayE> result2 = dbHelper.readAccount(Integer.parseInt(input));
for (AccountpayE accountpayEnt : result2) {
out.println(accountpayEnt.getMoney());
System.out.println(accountpayEnt.getMoney());
}
} catch (Exception e) {
out.println("Error");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Клиент:
public class Client {
public String fuser;
public String fserver;
PrintWriter out;
BufferedReader in;
BankViewAccount bankViewAccount = new BankViewAccount();
BankView bankView = new BankView();
List list = new ArrayList();
private String userName;
public void setName(String name) {
this.userName = name;
}
public String getName() {
return userName;
}
Client() {
Socket fromserver = null;
try {
fromserver = new Socket("localhost", 4444);
System.out.println("Welcome to Client!");
in = new BufferedReader(new InputStreamReader(fromserver.getInputStream()));
out = new PrintWriter(new OutputStreamWriter(fromserver.getOutputStream()), true);
System.out.println("Set name: ");
bankView.pack();
bankView.setVisible(true);
System.out.println(bankView.getNumber());
if (bankView.getNumber() != null) {
System.out.println("Account: " + bankView.getNumber());
out.println(bankView.getNumber());
}
if ((fserver = in.readLine()) != null) {
if (fserver.equals("Error")) {
JOptionPane.showMessageDialog(null, "Not Acoount", "Ошибка", JOptionPane.OK_OPTION);
new Client();
} else {
bankViewAccount.label.setText(bankView.getNumber());
bankViewAccount.textField1.setText(fserver);
}
}
if ((fserver = in.readLine()) != null) {
bankViewAccount.label.setText(bankView.getNumber());
bankViewAccount.textField2.setText(fserver);
bankViewAccount.pack();
bankViewAccount.setVisible(true);
System.out.println("Transfer to account " + bankViewAccount.getNumberTo());
out.println(bankView.getNumber());
out.println(bankViewAccount.getNumberTo());
out.println(bankViewAccount.getMoney());
}
if ((fserver = in.readLine()) != null) {
bankViewAccount.textField2.setText(fserver);
System.out.println(fserver);
}
} catch (IOException e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Error", JOptionPane.OK_OPTION);
} finally {
try {
in.close();
out.close();
fromserver.close();
} catch (IOException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage(), "Error", JOptionPane.OK_OPTION);
}
}
}
}
DBHelper:
public class DbHelper {
static Connection conn;
private static DbHelper instance;
private static String userName = "root";
private static String password = "";
private static String url = "jdbc:mysql://localhost/account";
private Statement stmt = null;
private ResultSet rs = null;
private int sr;
static Connection[] connections;
public static DbHelper getInstance() {
if (instance == null) {
instance = new DbHelper();
}
return instance;
}
DbHelper() {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection(url, userName, password);
System.out.println("Database connection established");
stmt = conn.createStatement();
} catch (Exception e) {
e.printStackTrace();
System.exit(0);
} finally {
{
if (conn != null) {
try {
conn.close();
System.out.println("Database connection terminated");
} catch (Exception e) {
}
}
}
}
}
public Connection getConn() {
if (conn == null) {
try {
conn = DriverManager.getConnection(url);
} catch (SQLException e) {
e.printStackTrace();
}
}
return conn;
}
public List<AccountpayE> listAccount() {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List<AccountpayE> result = session.createQuery("from AccountpayE").list();
session.getTransaction().commit();
session.close();
return result;
}
public List<AccountpayE> readAccount(Integer number) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List<AccountpayE> result;
result = session.createQuery("from AccountpayE where number="+number).list();
session.getTransaction().commit();
session.close();
return result;
}
public List<AccountpayE> payAccount(Integer number) throws Exception {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List<AccountpayE> result1;
result1 = session.createQuery("select number from AccountpayE where name=(select name from AccountpayE where number="+number).list();
session.getTransaction().commit();
session.close();
// HibernateUtil.shutdown();
return result1;
}
public void incertAccount(Integer number1, Integer number2, Integer money) throws Exception {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
AccountpayE op = session.get(AccountpayE.class, number1);
op.setMoney(op.getMoney()-money);
session.update(op);
AccountpayE op1 = session.get(AccountpayE.class, number2);
op1.setMoney(op1.getMoney()+money);
session.update(op);
session.getTransaction().commit();
session.close();
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть метод, который обновляет данные в БД по HashMap