Aplicação em Rede

7 respostas
H

Galera, criei cadastro em java que acessa um banco Access local, blz, agora eu queria pegar essa aplicação e colocar na rede, mas que o banco continuasse em uma máquina só, e que os outros acessem as informações da pc “servidor”. Isso é possível? se alguém tiver alguma dica… eu usei uma classe de acesso do nosso amigo do forum João Paulo Ribeiro Neder… desde já agradeço. :wink:

import java.sql.*;

public class acesso

{

public String resultado[][];

//---------------------------------------------------------------------------------------------

public String[][] pesquisa(String instrucao)

{

try

{

int j = 1;

int cont = 0;

String Hd=System.getProperty(user.dir);

Hd+="\AgendaDados.mdb";

Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);

String url=jdbc:odbc:Principal;

Connection con= DriverManager.getConnection(jdbc:odbc:Driver= + {Microsoft Access Driver (*.mdb)}; + DBQ= + Hd ,"","");

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery(instrucao);

int numCols = rs.getMetaData().getColumnCount();

while(rs.next())

{

cont ++;

}

resultado = new String[cont][numCols];

rs = stmt.executeQuery(instrucao);

while(rs.next())

{

for(int i = 1; i <= numCols; i++)

{

resultado[j-1][i-1] = rs.getString(i);

}

j++;

}

rs.close();

stmt.close();

con.close();

}

catch(SQLException ex)

{

System.out.println(SQLException:);

while(ex != null)

{

System.out.println("SQLState: " + ex.getSQLState());

System.out.println("Message:  " + ex.getMessage());

System.out.println("Vendor:   " + ex.getErrorCode());

ex = ex.getNextException();

}

}

catch(java.lang.Exception ex)

{

ex.printStackTrace();

}

return resultado;

}

//---------------------------------------------------------------------------------------------

public int edita(String instrucao)

{

int aux = 0;

try

{

String Hd=System.getProperty(user.dir);

Hd+="\AgendaDados.mdb";

Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);

String url=jdbc:odbc:Principal;

Connection con= DriverManager.getConnection(jdbc:odbc:Driver= + {Microsoft Access Driver (*.mdb)}; + DBQ= + Hd ,"","");

Statement stmt = con.createStatement();

aux = stmt.executeUpdate(instrucao);

stmt.close();

con.close();

}

catch(SQLException ex)

{

System.out.println(SQLException:);

while(ex != null)

{

System.out.println("SQLState: " + ex.getSQLState());

System.out.println("Message:  " + ex.getMessage());

System.out.println("Vendor:   " + ex.getErrorCode());

ex = ex.getNextException();

}

}

catch(java.lang.Exception ex)

{

ex.printStackTrace();

}

return aux;

}

}

7 Respostas

H

Utilize Java RMI.

É a maneira mais fácil de fazer o que vc está querendo.
Vc mantêm o BD em uma máquina, e um processo trabalhando como um servidor.

Vc consegue executar todo tipo de ação que quiser no banco de dados, tudo isso remotamente.
E o melhor…Java RMI já trata concorrência no acesso…

Se quiser um material de exemplo, me mande um e-mail: [email removido]

Falows! :wink:

H

Blz Herick, vou dar uma estudada nisso, mas tem como fazer a aplicação do cliente acessar remotamente o banco de dados via conexão ?

é uma aplicação simples, se alguém souber outro jeito tb tá valendo, obrigado.

H

Hélcio,

É bem trnaquilo sim…No seu cliente, vc deve informar o IP da máquina que vai estar funcionando como servidor, e faz uma chamada remota passando os parâmetros para consulta ou inserção, etc…

Te mandei o código de exemplo.
Flws!

L

se vc quiser que ninguem tenha um acessao ao Banco de Dados vc pode usar RMI, ai somente o servidor tera o acesso e os cliente fazem uma requisição, agora se quiser uma aplicação simples como vc diz, é só configurar via ODBC e como esta usando Access, acho que vc terá que mapear a pasta de onde estara o arquivo .mdb do access mas o melhor a fazer é mudar de Banco de Dados colocar um MySql. Para fazer com Access vc somente muda a String de conexao

Connection con= DriverManager.getConnection&#40;url,user,senha&#41;;

a url fica como na variavel que vc colocou e no ODBC e nome deve ficar Principal.

H

blzera Galera obrigado pela força, vou fazer os testes lá em casa amanhã eu posto pra falar se deu certo. Valews

T

Posso estar enganado, mas os drivers ODBC não permitem serialização, de maneira que, o comportamento do BD seria imprevisível quando acessado por clientes concorrentemente.

Esta serialização só poderia ser obtida com implementação de um serviço utilizando RMI no servidor ou com o uso de um driver JDBC.

L

O proprio Access não permite Concorrencia por isso acho que o melhor é colocar um outro Banco de Dados com o seu Drive.

Criado 17 de julho de 2006
Ultima resposta 18 de jul. de 2006
Respostas 7
Participantes 4