A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Java em Redes de Computadores Marcos André S. Kutova Setembro/98.

Apresentações semelhantes


Apresentação em tema: "Java em Redes de Computadores Marcos André S. Kutova Setembro/98."— Transcrição da apresentação:

1 Java em Redes de Computadores Marcos André S. Kutova Setembro/98

2 Í NDICE Introdução URLs Sockets Serialização RMI JDBC

3 Introdução

4 P ROTOCOLOS Protocolos da camada de transporte TCP - Transport Control Protocol Protocolo orientado à conexão que garante um fluxo de dados confiável. UDP - User Datagram Protocol Protocolo não orientado à conexão que envia pacotes independentes de dados e não garante a entrega.

5 P ORTAS Portas Os computadores só têm uma conexão de rede Os dados se destinam a aplicações diferentes As portas são reservadas.

6 URL - Uniform Resource Locator

7 URL S O que é URL? URL - Uniform Resource Locator String que descreve como encontrar um recurso na Internet Composto de duas partes: protocolo e nome do recurso Nome do Recurso: Máquina Nome arquivo Referência Porta

8 URL S Criando uma URL URL gamelan = new URL(http://www.gamelan.com/); Criando uma URL relativa URL gamelan = new URL(http://www.gamelan.com/); URL gamelanGames = new URL(gamelan,pages/games.html); URL gamelanPuzzle = new URL(gamelanGames,#PUZZLE);

9 URL S Outros construtores new URL(http,www.gamelan.com,pages/games.html); new URL(http://www.gamelan.com/pages/games.html); new URL(http,www.gamelan.com,80,pages/games.html); new URL(http://www.gamelan.com:80/pages/games.html);

10 URL S Exceção MalformedURLException try { URL myURL = new URL(... ); } catch (MalformedURLException e ) {... // código para tratar a exceção... }

11 URL S Métodos getProtocol(); getHost(); getPort(); getFile(); getRef();

12 URL S Exemplo import java.net.*; import java.io.*; public class URLReader { public static void main(String[] args) throws Exception { URL yahoo = new URL("http://www.yahoo.com/"); BufferedReader in = new BufferedReader( new InputStreamReader( yahoo.openStream())); String inputLine; while ((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close(); } }

13 URL S Reverse (1/3) import java.io.*; import java.net.*; public class Reverse { public static void main(String[] args) throws Exception { if (args.length != 1) { System.err.println("Usage: java Reverse string"); System.exit(1); }

14 URL S Reverse (2/3) String stringToReverse = URLEncoder.encode(args[0]); URL url = new URL("http://java.sun.com/cgi-bin/backwards"); URLConnection connection = url.openConnection(); connection.setDoOutput(true); PrintWriter out = new PrintWriter(connection.getOutputStream()); out.println("string=" + stringToReverse); out.close();

15 URL S Reverse (3/3) BufferedReader in = new BufferedReader( new InputStreamReader( connection.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close(); }

16 Sockets

17 S OCKETS O que é um Socket? Socket é uma ponta de uma comunicação ponto-a-ponto entre dois programas rodando em uma rede.

18 S OCKETS Lendo e escrevendo com Sockets (1/3) import java.io.*; import java.net.*; public class EchoClient { public static void main(String[] args) throws IOException { Socket echoSocket = null; PrintWriter out = null; BufferedReader in = null;

19 S OCKETS Lendo e escrevendo com Sockets (2/3) try { echoSocket = new Socket(args[0], 7); out = new PrintWriter(echoSocket.getOutputStream(), true); in = new BufferedReader( new InputStreamReader(echoSocket.getInputStream())); } catch (UnknownHostException e) { System.err.println("Don't know about host: "+args[0]+"."); System.exit(1); } catch (IOException e) { System.err.println("Couldn't get I/O for "+ "the connection to: "+args[0]+"."); System.exit(1); }

20 S OCKETS Lendo e escrevendo com Sockets (3/3) BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)); String userInput; while ((userInput = stdIn.readLine()) != null) { out.println(userInput); System.out.println("echo: " + in.readLine()); } out.close(); in.close(); stdIn.close(); echoSocket.close(); }

21 S ERVIDOR C HAT ChatServer

22 S ERVIDOR C HAT ChatServer import ChatServerThread; class ChatServer { public static void main(String args[]) { new ChatServerThread().start(); }

23 S ERVIDOR C HAT ChatServer ChatServerThread

24 S ERVIDOR C HAT ChatServerThread (1/4) import java.net.*; import java.lang.*; import sClientGroup; public class ChatServerThread extends Thread { ServerSocket servSock = null; sClientGroup group;

25 S ERVIDOR C HAT ChatServerThread (2/4) ChatServerThread() { try { servSock = new ServerSocket(1123); } catch (Exception e) { System.out.println("Could not initialize. Exiting."); System.exit(1); } System.out.println("Server successfully initialized. "+ "Waiting for connection..."); group = new sClientGroup(); group.start(); }

26 S ERVIDOR C HAT ChatServerThread (3/4) public void run() { while(servSock != null ) { Socket tempSock; try { tempSock = servSock.accept(); System.out.println("Received New Connection."); group.addClient( tempSock ); } catch (Exception e) { System.out.println("New Connection Failure. Exiting."); System.exit(1); }

27 S ERVIDOR C HAT ChatServerThread (4/4) public void finalize() { try { servSock.close(); } catch(Exception e) {} servSock = null; group.stop(); }

28 S ERVIDOR C HAT ChatServer ChatServerThread sClientGroup

29 S ERVIDOR C HAT sClientGroup (1/11) import java.net.*; import java.io.*; import java.util.*; import java.lang.*; import sClientThread; public class sClientGroup extends Thread { Vector theGroup; sClientGroup() { theGroup = new Vector(); }

30 S ERVIDOR C HAT sClientGroup (2/11) public void addClient(Socket s) { sClientThread tempThread; tempThread = new sClientThread( s, this ); theGroup.addElement(tempThread); tempThread.start(); } public void run() { while( true ) { try{ sleep(30000); } catch (Exception e) {} cleanHouse(); }

31 S ERVIDOR C HAT sClientGroup (3/11) /* send a message "msg", of type "type", to all Clients */ public void sendMessage(String msg, String type) { int x; for(x=0; x

32 S ERVIDOR C HAT sClientGroup (4/11) /* send a message "msg", of type "type", to the Client with alias "target" */ public void sendMessage(String msg, String target, String type) { int x; sClientThread tempThread; for(x=0; x

33 S ERVIDOR C HAT sClientGroup (5/11) /* here is where we handle any input received from a Client */ /* This method is called by sClientThread directly */ public void handleInput(String str, sClientThread T) { StringTokenizer st; /* this next line is for debugging only. You would not include it in the final product */ System.out.println("Got: "+str+" from "+T.getAlias());

34 S ERVIDOR C HAT sClientGroup (6/11) st = new StringTokenizer( str, "||"); if(st != null ) { String cmd, val=""; cmd = st.nextToken(); if( st.hasMoreTokens() ) val = st.nextToken(); /* "login" = a new person is logging in. Set the alias, send a welcome message, and then send everyone an updated list of Client names */ if(cmd.equals("login")) { T.setAlias( val ); sendMessage(T.getAlias()+"||"+T.getAlias()+ " has entered the room.", cmd); sendMessage(calcList(), "list"); return ; }

35 S ERVIDOR C HAT sClientGroup (7/11) /* "logout" = one of our clients is finished and wants to disconnect. Let everyone know that and then stop the connection. The garbage collection method will take care of removing them from the list. */ if(cmd.equals("logout")) { sendMessage(T.getAlias()+" has left the room.", cmd); T.setAlias( null ); T.stop(); return ; } /* someone wants to "say" something to the whole room */ if(cmd.equals("say")) { sendMessage(T.getAlias()+" says: "+ val, cmd); return ; }

36 S ERVIDOR C HAT sClientGroup (8/11) /* someone wants to whisper something to a specific person only */ if(cmd.equals("whisper")) { sendMessage(T.getAlias()+" whispers to you:"+ val,st.nextToken(),cmd); return ; }

37 S ERVIDOR C HAT sClientGroup (9/11) /* return a list of all currently connected users in the form "name1&name2&name3" */ public String calcList() { int x; StringBuffer buf = new StringBuffer(); String temp; for(x=0; x0 ) buf.setLength(buf.length()-1); return buf.toString(); }

38 S ERVIDOR C HAT sClientGroup (10/11) /* go through the Vector, and search for "dead" Threads (which are disconnected) and then remove them from the list */ public void cleanHouse() { int x; sClientThread tempThread; for (x=0; x

39 S ERVIDOR C HAT sClientGroup (11/11) public void finalize() { Thread t; for( int x=0;x

40 S ERVIDOR C HAT ChatServer ChatServerThread sClientGroup sClientThreads

41 S ERVIDOR C HAT sClientThread (1/4) import java.net.*; import java.lang.*; import java.io.*; import java.util.*; import sClientGroup; public class sClientThread extends Thread { sClientGroup parent; Socket theSock; BufferedReader dis; PrintWriter ps; String alias; sClientThread(Socket s, sClientGroup p) { theSock = s; parent = p; }

42 S ERVIDOR C HAT sClientThread (2/4) public void run() { try { dis = new BufferedReader( new InputStreamReader ( theSock.getInputStream())); ps = new PrintWriter( theSock.getOutputStream()); } catch (Exception e) {} while (theSock != null) { String input = null; try { input = dis.readLine().trim(); if(input != null) parent.handleInput(input, this); } catch (Exception e) {} }

43 S ERVIDOR C HAT sClientThread (3/4) public boolean message(String str) { try { ps.println(str); os.flush() } catch (Exception e) { return false; } return true; } public void finalize() { try { ps.close(); dis.close(); theSock.close(); } catch(Exception e) {} theSock = null; }

44 S ERVIDOR C HAT sClientThread (4/4) public void setAlias(String str) { alias = str; } public String getAlias() { return alias; }

45 C LIENTE C HAT ChatServer sClientThreads ChatClient Internet ChatServerThread sClientGroup

46 C LIENTE C HAT ChatClient (1/9) import java.net.*; import java.io.*; import java.util.*; public class ChatClient implements Runnable { BufferedReader dis = null; PrintWriter ps; Thread out; String name; Socket sock;

47 C LIENTE C HAT ChatClient (2/9) /* main */ public static void main( String args[] ) { Socket sock = null; BufferedReader dis = null; PrintWriter ps = null; BufferedReader tec = new BufferedReader( new InputStreamReader( System.in ) ); String command = ""; String theHost = "", name = ""; int thePort = 1123;

48 C LIENTE C HAT ChatClient (3/9) /* setup communication with the server */ while( sock == null ) { theHost = args[0]; name = args[1]; try { sock = new Socket(theHost,thePort); dis = new BufferedReader( new InputStreamReader(sock.getInputStream())); ps = new PrintWriter( sock.getOutputStream() ); } catch (Exception e) { System.out.println("Unable to contact host. Retrying..."); sock = null; } try { Thread.sleep( 1000 ); } catch(Exception e) {} }

49 C LIENTE C HAT ChatClient (4/9) /* register itself */ try { ps.println("login||"+name); ps.flush(); } catch(Exception e) { sock = null; System.out.println("Connection lost.\n"); System.exit(1); } System.out.println("Logged in to server successfully.\n"); /* Creates new client */ ChatClient c = new ChatClient( name, sock, dis, ps );

50 C LIENTE C HAT ChatClient (5/9) /* Keyboard reading */ while( !command.startsWith( "logout" ) ) { try { if( tec.ready() ) { command = tec.readLine(); try { ps.println(command); ps.flush(); } catch(Exception e) { System.out.println("Connection lost.\n"); sock = null; System.exit(1); } else Thread.sleep( 1000 ); } catch( Exception e ) {} }

51 C LIENTE C HAT ChatClient (6/9) try { tec.close(); dis.close(); ps.close(); sock.close(); } catch (Exception e) {} sock = null; System.out.println("Logged out from server.\n"); System.exit(0); }

52 C LIENTE C HAT ChatClient (7/9) public ChatClient( String name, Socket sock, BufferedReader dis, PrintWriter ps ) { this.name = name; this.sock = sock; this.ps = ps; this.dis = dis; out = new Thread( this ); out.start(); } /* reads message from other clientes */ public void run() { while( sock != null ) { try { if( dis != null ) {

53 ChatClient (8/9) String str = dis.readLine(); if(str != null) { if(str.indexOf("||") != -1) { StringTokenizer st = new StringTokenizer(str,"||"); String cmd = st.nextToken(); String val = st.nextToken(); if(cmd.equals("list")) { System.out.print( "Users: " ); StringTokenizer st2 = new StringTokenizer(val, "&"); while(st2.hasMoreTokens()) System.out.print(st2.nextToken()+" "); System.out.println(); } C LIENTE C HAT

54 ChatClient (9/9) else if(cmd.equals("logout")) { System.out.println(val+ " has left the room."); } else if(cmd.equals("login")) { System.out.println(val+ " has entered the room."); } else { System.out.println(val); } } catch (IOException e) { System.out.println("Connection lost."); } C LIENTE C HAT

55 Serialização

56 S ERIALIZAÇÃO Definição Formatação dos dados para que possam ser enviados pela rede. As classes devem implementar a interface Serializable intbytes Internet bytesint MarshalingUnmarshaling

57 S ERIALIZAÇÃO Marshaling writeObject() Objeto writeObject() ObjectOutputStreambytesOutputStream

58 S ERIALIZAÇÃO Unmarshaling readObject() Objeto readObject() ObjectInputStreambytesInputStream

59 S ERIALIZAÇÃO public class FichaCadastro implements Serializable { public String nome; public String senha; public String nomeCompleto; public String instituicao; public String ; public FichaCadastro( String nome, String senha, String nomeCompleto, String instituicao, String ) { this.nome = nome; this.senha = senha; this.nomeCompleto = nomeCompleto; this.instituicao = instituicao; this. = ; } }

60 S ERIALIZAÇÃO // Processo de serialização do objeto private void writeObject( java.io.ObjectOutputStream out ) throws IOException { out.writeObject( nome ); out.writeObject( senha ); out.writeObject( nomeCompleto ); out.writeObject( instituicao ); out.writeObject( ); out.flush(); }

61 S ERIALIZAÇÃO // Processo de deserialização do objeto private void readObject( java.io.ObjectInputStream in ) throws IOException, ClassNotFoundException { nome = (String) in.readObject(); senha = (String) in.readObject(); nomeCompleto = (String) in.readObject(); instituicao = (String) in.readObject(); = (String) in.readObject(); }

62 S ERIALIZAÇÃO Vantagens Facilidade de programação Persistência de objetos Desvantagens Velocidade de comunicação

63 RMI - Remote Method Invocation

64 RMI O que é RMI? Remote Method Invocation Permite que objetos rodando em uma JVM invoquem métodos de objetos rodando em outra JVM. Internet JVM 1 Método() objeto JVM 2 Método() objeto

65 RMI Arquitetura do RMI Internet JVM 1 Método() objeto JVM 2 Método() objeto Stub Skeleton

66 RMI Serviço de Nomes server rmi://server/name client name Naming Registry Remote Object Referência Remota Internet

67 S ERVIDOR RMI Seqüência de desenvolvimento Definir a interface remota Implementar a interface remota Implementar programa que registre o objeto Gerar o stub e o skeleton usando rmic Escrever o cliente Iniciar o rmiregistry Iniciar o servidor Executar o cliente

68 S ERVIDOR RMI Definindo a interface remota Especificar os métodos que poderão ser invocados remotamente. Os clientes utilizam as interfaces, e não as implementações. package hello; import java.rmi.Remote; import java.rmi.RemoteException; public interface HelloWorld extends Remote { String sayHello() throws RemoteException; }

69 S ERVIDOR RMI Implementando a interface remota Declarar as interfaces sendo implementadas Definir o construtor do objeto remoto Fornecer uma implementação para cada método remoto declarado nas interfaces Declaração package hello; import java.rmi.*; import java.rmi.server.*; public class HelloWorldImpl extends UnicastRemoteObject implements HelloWorld {

70 S ERVIDOR RMI java.rmi.server.UnicastRemoteObject Superclasse para implementação de objetos remotos Comunicação ponto-a-ponto via sockets Construtor public HelloWorldImpl() throws RemoteException { super(); }

71 S ERVIDOR RMI Implementação dos métodos remotos public String sayHello() throws RemoteException { return( Hello, World! ); } Passagem de parâmetros Tipos primitivos (por valor) Objetos serializáveis (por valor) Objetos remotos (por referência)

72 S ERVIDOR RMI Rotina main Instala um gerenciador de segurança Registra o objeto remoto public static void main( String args[] ) { System.setSecurityManager( new RMISecurityManager() ); try { HelloWorld hw = new HelloWorldImpl(); Naming.rebind(HelloWorld, hw); } catch( Exception e ) { System.out.println( HelloWorld: +e.getMessage() ); }

73 S ERVIDOR RMI Compilando javac -d. *.java Gerando stubs e skeletons rmic -d. hello.HelloWorldImpl

74 C LIENTE RMI Escrevendo o cliente package hello; import java.rmi.*; class HelloClient { public static void main( String args[] ) { try { HelloWorld hw = (HelloWorld)Naming.lookup(HelloWorld); System.out.println( hw.sayHello() ); } catch( Exception e ) { System.out.println(Error connecting the server); }

75 RMI Rodando o rmiregistry start rmiregistry 1099 (Windows) ou rmiregistry & (UNIX) Rodando o servidor java hello.HelloWorldImpl Rodando o cliente java hello.HelloClient

76 S ERVIDOR C HAT RMI ChatServer.java package chat; interface ChatServer extends java.rmi.Remote { public void conecta( String nome, ChatClient c ) throws java.rmi.RemoteException; public String [] naSessao() throws java.rmi.RemoteException; public void desconecta( ChatClient c ) throws java.rmi.RemoteException; public void diga( ChatClient c, String msg ) throws java.rmi.RemoteException; }

77 S ERVIDOR C HAT RMI ChatServerImpl.java (1/7) package chat; import java.rmi.*; import java.rmi.server.UnicastRemoteObject; import java.util.Hashtable; import java.util.Enumeration; public class ChatServerImpl extends UnicastRemoteObject implements ChatServer { HashtableusuariosRegistrados; }

78 S ERVIDOR C HAT RMI ChatServerImpl.java (2/7) // Construtor public ChatServerImpl() throws RemoteException { // Chama o construtor da superclasse super(); // Inicializa tabela de usuarios usuariosRegistrados = new Hashtable(); }

79 S ERVIDOR C HAT RMI ChatServerImpl.java (3/7) // Conecta novo usuario a sessao public void conecta( String nome, ChatClient c ) throws RemoteException { // Registra o usuario usuariosRegistrados.put( c, nome ); // Avisa a todos sobre o novo usuario Enumeration usuarios = usuariosRegistrados.keys(); while( usuarios.hasMoreElements() ) { ChatClient c2 = (ChatClient) usuarios.nextElement(); if( !c.equals(c2) ) c2.evento( nome + " entrou na sala..." ); }

80 S ERVIDOR C HAT RMI ChatServerImpl.java (4/7) // Desconecta um usuario public void desconecta( ChatClient c ) throws RemoteException { // Desconecta o usuario String nome = (String) usuariosRegistrados.get( c ); usuariosRegistrados.remove( c ); // Atualiza a tela dos usuarios Enumeration usuarios = usuariosRegistrados.keys(); while( usuarios.hasMoreElements() ) { ChatClient c2 = (ChatClient) usuarios.nextElement(); c2.evento( nome + " deixou a sala..." ); }

81 S ERVIDOR C HAT RMI ChatServerImpl.java (5/7) // Retorna os usuarios ativos public String [] naSessao() throws RemoteException { // Pega os nomes dos usuarios String [] nomes = new String[ usuariosRegistrados.size() ]; Enumeration e = usuariosRegistrados.elements(); for( int i=0; i < nomes.length; i++ ) nomes[i] = (String) e.nextElement(); return( nomes ); }

82 S ERVIDOR C HAT RMI ChatServerImpl.java (6/7) // Envia uma mensagem publica public void diga( ChatClient c, String msg ) throws java.rmi.RemoteException { // Avisa a todos sobre o novo usuario String nome = (String) usuariosRegistrados.get( c ); Enumeration usuarios = usuariosRegistrados.keys(); while( usuarios.hasMoreElements() ) { ChatClient c2 = (ChatClient) usuarios.nextElement(); c2.disse( nome, msg ); }

83 S ERVIDOR C HAT RMI ChatServerImpl.java (7/7) // Rotina principal public static void main(String args[]) { // Cria e instala um gerenciador de seguranca System.setSecurityManager(new RMISecurityManager() ); // Registra-se try { ChatServer servidor = new ChatServerImpl(); Naming.rebind("Chat", servidor); System.out.println("Sessao registrada ); } catch (Exception e) { System.out.println("Sessao nao registrada+ e.getMessage()); }

84 C LIENTE C HAT RMI ChatClient.java package chat; interface ChatClient extends java.rmi.Remote { public void disse( String usuario, String mensagem ) throws java.rmi.RemoteException; public void evento( String mensagem ) throws java.rmi.RemoteException; }

85 C LIENTE C HAT RMI ChatClientImpl.java (1/6) package chat; import java.io.*; import java.rmi.*; import java.rmi.server.UnicastRemoteObject; public class ChatClientImpl extends UnicastRemoteObject implements ChatClient { public Stringnome; private ChatServer servidor; }

86 C LIENTE C HAT RMI ChatClientImpl.java (2/6) // Construtor da classe public ChatClientImpl(ChatServer servidor,String nome) throws RemoteException { super(); // Grava o nome do usuario this.nome = nome; // Conecta-se ao servidor this.servidor = servidor; servidor.conecta(nome, this ); }

87 C LIENTE C HAT RMI ChatClientImpl.java (3/6) // Recebe uma mensagem digitada por alguem public void disse( String usuario, String mensagem ) throws RemoteException { System.out.println( " "+mensagem ); } // Recebe uma mensagem enviada pelo servidor public void evento( String mensagem ) throws RemoteException { System.out.println( mensagem ); }

88 C LIENTE C HAT RMI ChatClientImpl.java (4/6) // Rotina Principal public static void main( String args[] ) { String comando = // Linha de comando try { // Cria uma referência ao servidor final ChatServer servidor = (ChatServer) Naming.lookup( "Chat" ); // Cria novo objeto cliente final ChatClientImpl c = new ChatClientImpl( servidor,args[0] );

89 C LIENTE C HAT RMI ChatClientImpl.java (5/6) // Cria um fluxo de entrada do teclado BufferedReader teclado = new BufferedReader( new InputStreamReader( System.in ) ); // Loop de troca de mensagens while( !comando.equalsIgnoreCase( ) ) { // Processa o comando if (comando.equalsIgnoreCase( )) { String [] eles; System.out.print( "Usuarios na sessao:" ); eles = servidor.naSessao(); for( int i=0; i < eles.length; i++ ) System.out.print( " "+eles[i] ); System.out.println(); } else servidor.diga( c, comando );

90 C LIENTE C HAT RMI ChatClientImpl.java (6/6) // Lê novo comando do teclado while( ! teclado.ready() ) Thread.sleep( 1000 ); comando = teclado.readLine(); } // while // Abandona a sessão servidor.desconecta( c ); System.exit( 0 ); } catch (Exception e ) { System.out.println("Exceção: "+exp.getMessage()); } // try } // main

91 JDBC

92 O que é JDBC? Java Database Connectivity ? API Java para executar instruções SQL (java.sql) Retorna o resultado da pesquisa em variáveis do Java Programação simples

93 JDBC O que JDBC faz? Estabelece a conexão com a base de dados Envia instruções SQL Processa o resultado Connection con = DriverManager.getConnection ( "jdbc:odbc:wombat", "login", "password") Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery( "SELECT a, b, c FROM Table1"); while (rs.next()) { int x = getInt("a"); String s = getString("b"); float f = getFloat("c"); }

94 JDBC Arquitetura Cliente/Servidor de duas camadas Aplicação fala diretamente com BD. Instruções SQL são levadas para a BD e os resultados são enviados de volta para o usuário. Client System Data Store

95 JDBC Arquitetura Cliente/Servidor de três camadas Instruções SQL são enviadas para a camada do meio e depois para a BD. A BD processa e envia resultados de volta a camada do meio. Possibilita o controle de manutenção, acesso e alterações Provê vantagens de performance Client System Application Server Data Store

96 JDBC Classe DriverManager Carregando o driver Class.fornName( postgresql.Driver ); Estabelecendo conexão DriverManager.getConnection( url, nome, senha );

97 JDBC Instruções SQL Statement - criada pelo método createStatement. Envia simples instruções SQL. PreparedStatement- criada pelo método prepareStatement. Usado para instruções que carregam um ou mais parâmetros como argumentos de entrada. CallableStatement - criada pelo método prepareCall. São usadas para executar SQL stored procedures - um grupo de instruções SQL nomeado como uma chamada a uma função.

98 JDBC Execução das instruções executeQuery() executeUpdate() execute() (retorna mais de 1 conjunto de resultados) Resultado das instruções Classe ResultSet Métodos.next().getXXX()

99 JDBC Class.forName( "postgresql.Driver" ); Connection con = DriverManager.getConnection( "jdbc:postgresql://tekila.intermidia.icmsc.sc.usp.br:5432/ +hipermidia", "kutova", "" ); // Cria o query e busca os resultados Statement select = con.createStatement(); ResultSet result = select.executeQuery( "SELECT codinome, senha FROM usuarios" ); // Testa se o usuário está cadastrado encontrou = false; while( result.next() && !encontrou ) { String name = result.getString(1).trim(); String password = result.getString(2).trim(); if((name.compareTo(nome)==0)&&(password.compareTo(senha)==0)) encontrou = true; } select.close(); con.close();

100 Referências Java Technology Homepage - Teach Yourself Java 1.1 in 21 Days - L. Lemay & C. Perkins Java Unleashed - Michael Morrison The Java Tutorial - Mary Campione & Kathy Walrath Thinking In Java - Black Art of Java Game Programming - J.Fan, E.Ries & C.Tenitchi


Carregar ppt "Java em Redes de Computadores Marcos André S. Kutova Setembro/98."

Apresentações semelhantes


Anúncios Google