Estou desenvolvendo um aplicativo para cadastro de clientes, sendo que este será realizado para um trabalho da disciplina de redes, o cadastro vai salvar BD MySQL, sei que posso fazer isso por meio do JDBC e HIBERNATE, porém, o requisito principal do trabalho é utilizar o socket para comunicação entre cliente/servidor(BD), é “reinventar a roda”, mas . . . . Estou com ele todo pronto, porém, não consegui achar uma forma de comunicar BD por este meio. Conversei com alguns colegas de faculdade que vivenciam com a linguagem a mais tempo, porém, ninguém sabe. Alguém tem um idéia de como fazer isto, uma luz . . .
Pois é, já fiz um “insert” nesta condição de chamar o MySQL em localhost e na porta 3306, e quando fui fazer um Run File ele acusou um erro. Vou tentar com IP 127.0.0.1, mas, se tiveres um exemplo prático, te agradeceria . .
Crie um client socket que envia os dados para um server socket. Este servidor pega os dados, você pode receber via xml - recomendo xstream pela facilidade, algum formato texto posicional, ou com separadores (’|’, ‘;’).
No socket servidor você pega os dados, transforma nos objetos equivalentes e grava no banco.
Para gravar no banco utilize JDBC ou algum framework de persistência.
Com certeza o que seu professor quer, é que você faça algo que trafegue pela rede, mas com relação a comunicação com o banco, pouco importa.
Afinal, você não vai montar um driver na unha, vai? :thumbup:
Crie um client socket que envia os dados para um server socket. Este servidor pega os dados, você pode receber via xml - recomendo xstream pela facilidade, algum formato texto posicional, ou com separadores (’|’, ‘;’).
No socket servidor você pega os dados, transforma nos objetos equivalentes e grava no banco.
Para gravar no banco utilize JDBC ou algum framework de persistência.
Com certeza o que seu professor quer, é que você faça algo que trafegue pela rede, mas com relação a comunicação com o banco, pouco importa.
Afinal, você não vai montar um driver na unha, vai? :thumbup:
Crie um client socket que envia os dados para um server socket. Este servidor pega os dados, você pode receber via xml - recomendo xstream pela facilidade, algum formato texto posicional, ou com separadores (’|’, ‘;’).
No socket servidor você pega os dados, transforma nos objetos equivalentes e grava no banco.
Para gravar no banco utilize JDBC ou algum framework de persistência.
Com certeza o que seu professor quer, é que você faça algo que trafegue pela rede, mas com relação a comunicação com o banco, pouco importa.
Afinal, você não vai montar um driver na unha, vai? :thumbup:
O servidor socket de cliente e servidor já estão pronto, o que eu preciso é inserir o SQL para query e insert, eu peguei o exemplo aqui do GUJ mesmo e adaptei as minhas necessidades, fiz um teste enviando uma frase para o server e rolou legal; o que eu não consigo e colocar o código SQL dentro deste socket. Eu também tentei fazer uma classe só para comunicar com o banco, instanciando este dentro do Socket, usando o drive JDBC, porém apresentou alguns erros, quando dei o Run File. Faz umas 2 semanas que comecei a estudar a linguagem, por isso, que estou um pouco perdido.
Tipo fazer um insert ou um query dentro do código. Peguei alguns livros na faculdade, mas, pouco parece sobre socket, no que aperece, mostra aquele “jogo da velha” e alguns exemplos que não trabalham com banco. Espero não estar falando besteira.
package Socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Servidor {
public static void main(String[] args) {
//Declaro o ServerSocket 12
ServerSocket serv=null;
//Declaro o Socket de comunicação
Socket s= null;
//Declaro o leitor para a entrada de dados
BufferedReader entrada=null;
try{
//Cria o ServerSocket na porta 3306 se estiver disponível
serv = new ServerSocket(3306);
//Aguarda uma conexão na porta especificada e cria retorna o socket que irá comunicar com o cliente
s = serv.accept();
//Cria um BufferedReader para o canal da stream de entrada de dados do socket s
entrada = new BufferedReader(new InputStreamReader(s.getInputStream()));
//Aguarda por algum dado e imprime a linha recebida quando recebe
System.out.println(entrada.readLine());
//trata possíveis excessões de input/output. Note que as excessões são as mesmas utilizadas para as classes de java.io
System.out.println("Iniciação de servidor OK");
}catch(IOException e){
//Imprime uma notificação na saída padrão caso haja algo errado.
System.out.println("Erro para criar ou receber o socket.");
}finally{
try{
//Encerro o socket de comunicação
s.close();
//Encerro o ServerSocket
serv.close();
}catch(IOException e){
}
}
}
}
Cliente
package Cliente;
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
public class Cliente {
public static void main(String[] args) {
//Declaro o socket cliente
Socket s = null;
//Declaro a Stream de saida de dados
PrintStream ps = null;
try{
//Cria o socket com o recurso desejado na porta 3306
s = new Socket("127.0.0.1",3306);
//Cria a Stream de saida de dados
ps = new PrintStream(s.getOutputStream());
//Imprime uma linha para a stream de saída de dados
ps.println("Cheguei ao servidor");
//Trata possíveis exceções
}catch(IOException e){
System.out.println("Erro ao criar ou enviar dados pelo socket.");
}finally{
try{
//Encerra o socket cliente
s.close();
}catch(IOException e){}
}
}
}
Chamar BD. Este não cheguei a fazer o finally.
package trabalhog1_2;
import java.sql.*;
import javax.sql.*;
public class conexaoBanco {
public void conecta() {
Connection con = null;
Statement stmt = null;
ResultSet res = null;
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/", "root", "muniz");
stmt = con.createStatement();
res = stmt.executeQuery("select * from alunos");
while (res.next()){
System.out.println(res.getString("nome"));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.println("Estou no ClassNotFoundException");
} catch (SQLException e) {
e.printStackTrace();
System.out.println("Estou no SQLException");
}
finally{
//colocar o que aqui?????
}
}
public static void main(String[] args) {
}
}