не получается сохранить данные в БД

 
 
 
Сообщения:8
Всем привет помогите разобраться. Не получается сохранить данные в базу данных, хотя программа отрабатывает и ошибок не выдает. База данных создана предварительно.Не судите строго совсем только недавно начал учиться.

public class Server {
	static Set<Socket> clients = new HashSet<>();

	static synchronized void addClient(Socket client) {
		clients.add(client);
	}

	static synchronized void removeClient(Socket client ){
		clients.remove(client);
	}

	public static void main(String []args)throws IOException{
		ServerSocket ss = new ServerSocket(8083);
			
		
		while(true){
		 Socket accept = ss.accept();
		 System.out.println("Accepted "+ss.getInetAddress() );
		 
		 new Thread(new Runnable(){

			public void run() {
				try{
				addClient(accept);
								
				InputStream inputStream = accept.getInputStream();
				OutputStream outputStream = accept.getOutputStream();
				BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
				while(true){
					String line = br.readLine();
					if(line==null||"exit".equals(line))
						break;
					for(Socket s : clients ){
						System.out.println("got line: "+line);
						try{
							s.getOutputStream().write((line+"\n").getBytes());
						}catch(IOException e){
						}	
					}
				}
			}catch(IOException e ){
					e.printStackTrace();
				}
				removeClient(accept);
		}
	}).start();
		}
	}
}


public class Client {
	public static  String name;
	public static String s1;
	public static void main(String[] args) throws IOException {
		Socket s = new Socket("127.0.0.1", 8083);
		Scanner sc = new Scanner(System.in);
		Scanner sc3 = new Scanner(System.in);
		System.out.println("what is your name?? ");
		String name = sc3.nextLine();
		System.out.println("Hello "+ name );
	
		
		OutputStream outputStream = s.getOutputStream();
		new Thread(new Runnable() {

			public void run() {
				try {
					
					InputStream inputStream = s.getInputStream();
					BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
					while (true) {
						String s1 = br.readLine();
						System.out.println("NEt: \n" + s1);

					}
				} catch (IOException e) {
					e.printStackTrace();

				}

			}

		}).start();
		while(true){
			while(sc.hasNextLine()){
			
			String line = sc.nextLine();
			System.out.println(" Sending line: \n"+line);
				outputStream.write((line+"\n").getBytes());
			}
			while(sc.hasNextLine()){
				System.out.println(sc.nextLine());
			}
			System.out.println("----------");
		}
	}

}


public class Connection_JDBC {

	public static void main(String[] args) throws SQLException, ClassNotFoundException  {
		
		Client cl = new Client();
		System.out.println(cl.name);
		
		Class.forName("org.postgresql.Driver");
		System.out.println("Драйвер подключен");
		Connection connection = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/main","postgres","post" );
		PreparedStatement pst =connection.prepareStatement("INSERT INTO history (name,message)values(?,?);");
		pst.setString(1,cl.name );
		pst.setString(2,cl.s1 );
		pst.executeUpdate();
		ResultSet rs = pst.executeQuery();
		
		connection.close();
		pst.close();
		
	
	}
}
Изменен:08 ноя 2016 19:01
 
 
Сообщения:456
mangust:
Не получается сохранить данные в базу данных, хотя программа отрабатывает и ошибок не выдает.

Ознакомьтесь с таким понятием как "транзакция".
 
 
Сообщения:8
А то что данные беру которые хочу сохранить с клиента нечего страшного?
 
 
Сообщения:456
mangust:
А то что данные беру которые хочу сохранить с клиента нечего страшного?

Не понял вопроса.

Да и вообще сделайте connection.setAutoCommit(true);
 
 
Сообщения:8
данные которые я хочу занести в БД я беру из класса Client. на одном из форумов мне сказали что дынные нужно брать из класса Server.так ли это?
 
 
Сообщения:456
mangust:
данные которые я хочу занести в БД я беру из класса Client. на одном из форумов мне сказали что дынные нужно брать из класса Server.так ли это?

Данные вы можете взять хоть с потолка.
У вас происходит вставка в базу, но данные не сохраняются потому что нет подтверждения транзакции.
Либо после выполнения действия с базой подтвердите транзакцию
connection.commit();

либо установите автоматическое подтверждение после того как создали соединение
Connection connection = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/main","postgres","post" );
connection.setAutoCommit(true);

И таки разберитесь с понятием транзакций в базах данных.
 
 
Сообщения:8
Спасибо большое попробую. Нет даже огромное Спасибо. просто очень долго мучаюсь
Изменен:07 ноя 2016 18:15
 
 
Сообщения:8
блин тоже без изменений нечего не получилось.
 
 
Сообщения:456
mangust:
блин тоже без изменений нечего не получилось.

Значит проблема где-то в другом месте, а до записи в базу дело может и не доходит.
Отредактируйте первое сообщение заключив исходники в тег code. Без оформления невозможно понять что там происходит. И что вообще должен этот код делать?
 
 
Сообщения:8
это приложение клиент сервер(чат). то есть должны люди общаться и сохранятся их история сообщений.Я думаю что у меня не получается из за этих строк

pst.setString(1,cl.name );
pst.setString(2,cl.s1 );
Изменен:08 ноя 2016 19:06
 
 
Сообщения:456
mangust:
Я думаю что у меня не получается из за этих строк

Вы отладчиком пользоваться умеете? Запустите в debug режиме, поставьте туда точку останова и посмотрите что там.
 
 
Сообщения:8
нет не могу. Совсем только новичок только начинаю заниматься этим. Попробую почитать что нибудь.
 
Модераторы:Нет
Сейчас эту тему просматривают:Нет