SEJAM BEM VINDOS!!!

Este blog é destinado a todos que interessam em aprender e compartilhar conhecimento sobre desenvolvimento de aplicativos, linguagens de programação, banco de dados, entre outros.

O que é OCX?

Abreviatura de OLE custom control. Módulo de software que se baseia nas tecnologias OLE e COM que, quando chamado por uma aplicação, produz um controle que acrescenta algum recurso interessante à aplicação. A tecnologia OCX é independente de plataforma, opera em sistemas operacionais de 16 e 32 bits e pode ser usada com várias aplicações. É a sucessora da tecnologia VBX (Visual Basic custom control), que aceitava apenas aplicações do Visual Basic, e constitui a base dos controles ActiveX. Os controles OCX podem ser criados em diversas linguagens, embora o Visual C++ seja a linguagem mais utilizada. Desenvolvida pela Microsoft, a tecnologia OCX é tratada na especificação OCX 96 (1996 OLE Controls specification). Pesquise também ActiveX controls (controles ActiveX); COM (definição 2); control (controle – definição 2); OLE; VBX; Visual Basic.

Fonte: http://o-que-significa.blogspot.com.br/2011/06/ocx.html#.UxivZPldXik

domingo, 9 de março de 2014

Conexão Simples JSP + Servlet + Banco de Dados

Ola tudo bem? Hoje vamos falar de conexão a banco de dados utilizando JSP e Servlet, não vamos nos preocupar hoje com padrão de projetos, camadas entre outros, vamos nos ater neste momento apenas na inserção e recuperação das informações do banco de dados.
Para a execução desta tarefa vamos utilizar o NetBeans 7.3 ou superior que pode ser encontrado em [https://netbeans.org/downloads/] versão [Java EE] ou completa.

Para acompanhar este post é necessário conhecer:
  • Estrutura de Projetos no NetBeans;
  • Adicionar Bibliotecas(JARs);
  • HTML básico;
  • Linguagem JAVA
  • SQL (mais sobre)
Com o NetBeans aberto vamos criar um novo projeto JSP através do caminho [Menu Arquivo\Novo Projeto\Java Web\Aplicação Web]  clique em [próximo], defina o nome de sua aplicação e depois o local, por padrão fica a pasta clique em [próximo], agora vem a definição de qual servidor iremos utilizar, escolha entre [Apache Tomcat] ou [GlassFish Server] , clique em [finalizar] e a estrutura do seu projeto será criada.

Para realizar a conexão com banco de dados, é necessário utilizar algumas bibliotecas. Para conectar a um banco MySql deve se utilizar o jar [mysql-connector-java-5.1.29-bin.jar] disponível em [http://dev.mysql.com/downloads/connector/j/] , para conexão com o SQL Server utilize o jar [sqljdbc4-3.0.jar] disponível em [http://www.java2s.com/Code/Jar/s/Downloadsqljdbc430jar.htm].


No index.jsp vamos criar um menu, contendo o seguinte código HTML
 

 <%@page contentType="text/html" pageEncoding="UTF-8"%>  
 <!DOCTYPE html>  
 <html>  
   <head>  
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
     <title>Conexão Simples</title>  
   </head>  
   <body>  
     <h1>Menu</h1>  
     <a href="incluir.jsp">Incluir</a><br>  
     <a href="listar.jsp">Listar</a><br>  
   </body>  
 </html>  
Index.jsp

Vamos inserir uma nova pagina jsp [incluir.jsp] onde iremos criar o formulário para inclusão de novos registros.
Obs.: não iremos nos preocupar com a formatação da interface e nem validação das informações neste momento.


 <%@page contentType="text/html" pageEncoding="UTF-8"%>  
 <!DOCTYPE html>  
 <html>  
   <head>  
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
     <title>Inclusão</title>  
   </head>  
   <body>  
     <h1>Inclusão</h1>  
     <form action="svCadastro?cmd=incluir" method="post">  
       <label>Id:</label><input type="number" name="id"><br>  
       <label>Nome:</label><input type="text" name="nome"><br>  
       <label>Disciplina:</label><input type="text" name="disciplina"><br>  
       <label>Nota</label><input type="number" name="nota"><br>  
       <input type="submit" value="Gravar">  
     </form>  
   </body>  
 </html>  
incluir.jsp

Observe que o action do formulário esta apontando para o servlet [svCadastro], nos remos criá-lo em breve, e esta enviando um parâmetro [cmd] com o valor [incluir].

Para organização do nosso código fonte, vamos criar dois pacotes o primeiro será [br.com.treinamento.bd] e [br.com.treinamento.servlets].
No pacote [br.com.treinamento.bd] iremos criar uma nova classe java [ConexaoBD], que realizará a conexão com o banco de dados.
 package br.com.treinamento.bd;  
 import java.sql.Connection;  
 import java.sql.DriverManager;  
 import java.sql.SQLException;  
 /**  
  *  
  * @author Raulivan  
  */  
 public class ConexaoBD {  
   //Metodo que irá realizar a conexão de acordo com o banco de dados solicitado  
   public static Connection Contectar(String banco) throws SQLException, Exception{  
     if(banco.equalsIgnoreCase("SQL"))  
       return ConectarSQLServer();  
     else if(banco.equalsIgnoreCase("MySQL"))  
       return ConectarMySQL();  
     else  
       return null;  
   }  
   //Método que realiza a conexão com o SQL Server  
   private static Connection ConectarSQLServer() throws SQLException, Exception{  
     String banco = "AGENDA";//"NOME_DO_BANCO";  
     String usuario = "sa";//"LOGIN_SQL";  
     String senha = "xxxxxx";//SENHA_SQL";  
     String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";  
     String servidor = "RAULIVANPC\\SQLEXPRESS";;  
     Connection conn;  
     //definição do driver utilizado  
     Class.forName(driver);  
     //inicializa a conexão  
     conn = DriverManager.getConnection("jdbc:sqlserver://" + servidor + ";databaseName=" + banco, usuario, senha);  
     return conn;  
   }  
   //Método que realiza a conexão com MySql  
   private static Connection ConectarMySQL() throws SQLException, ClassNotFoundException {  
       String banco = "AGENDA";//"NOME_DO_BANCO";  
       String usuario = "root";//"LOGIN_SQL";  
       String senha = "xxxxxxx";//SENHA_SQL";  
       String driver = "com.mysql.jdbc.Driver";  
       String servidor = "localhost";  
       Connection conn;  
        //definição do driver utilizado  
       Class.forName(driver);  
        //inicializa a conexão  
       conn = DriverManager.getConnection("jdbc:mysql://" + servidor + ":3306/" + banco, usuario, senha);  
       return conn;  
   }  
 }  
Classe ConexaoBD.java

Vamos criar o servlet que será responsável por inserir e recuperar as informações do banco de dados, para isso vamos considerar que o banco de dados tenha a seguinte estrutura:

  • Nome do banco: Treinamento;
  • Tabela: Alunos;
    • Id inteiro;
    • Nome varchar(80);
    • Disciplina varchar(80);
    • Nota float

No pacote [br.com.treinamento.servlets] vamos criar um novo servlet [svCadastro]. Altere o método [processRequest], conforme o código abaixo.


 protected void processRequest(HttpServletRequest request, HttpServletResponse response)  
       throws ServletException, IOException {  
     //Pega o valor do parametro cmb para descobrir qual operação será realizada  
     String comando = request.getParameter("cmd");  
     if(comando.equalsIgnoreCase("incluir")){  
       try {   
         Connection con=null;  
         Statement stm =null;  
         try {  
           //Cira a conexão  
           con = ConexaoBD.Contectar("MySql");  
           //Cria o statements que executam as sentenças sql no banco  
           stm = con.createStatement();  
         } catch (Exception ex) {  
           Logger.getLogger(svCadastro.class.getName()).log(Level.SEVERE, null, ex);  
         }          
         //monta a sentença sql  
         String query = "insert into alunos(Id,Nome,Disciplina,Nota) values("+  
               request.getParameter("id") + ",'"+   
               request.getParameter("nome") +"','"+  
               request.getParameter("disciplina") +"'," +  
               request.getParameter("nota") +")";   
        //Executa a setença sql no bando de dados    
        stm.executeUpdate(query);   
        //redirencina para a página index.jsp  
        response.sendRedirect("index.jsp");  
      }catch (SQLException e){  
        //Cria uma pagina para exibir o erro  
        PrintWriter out = response.getWriter();  
        out.println("<!DOCTYPE html>");  
        out.println("<html>");  
        out.println("<head>");  
        out.println("<title>Erro</title>");        
        out.println("</head>");  
        out.println("<body>");  
        out.println("<h1>Erro: " + e.getMessage() + "</h1>");  
        out.println("</body>");  
        out.println("</html>");      
        out.close();  
      }   
     }else if(comando.equalsIgnoreCase("alteracao")){  
       try {   
         Connection con=null;  
         Statement stm =null;  
         try {  
           //Cira a conexão  
           con = ConexaoBD.Contectar("MySql");  
           //Cria o statements que executam as sentenças sql no banco  
           stm = con.createStatement();  
         } catch (Exception ex) {  
           Logger.getLogger(svCadastro.class.getName()).log(Level.SEVERE, null, ex);  
         }  
         //monta a sentença sql  
         String query = "update alunos set "+  
               "nome= '" + request.getParameter("nome") +  
               "', disciplina = '" + request.getParameter("disciplina") +  
               "', nota = " + request.getParameter("nota") +  
               " where id = "+ request.getParameter("id");  
        //Executa a setença sql no bando de dados    
        stm.executeUpdate(query);   
        //redirencina para a página index.jsp  
        response.sendRedirect("index.jsp");  
      }catch (SQLException e){  
        //Cria uma pagina para exibir o erro  
        PrintWriter out = response.getWriter();  
        out.println("<!DOCTYPE html>");  
        out.println("<html>");  
        out.println("<head>");  
        out.println("<title>Erro</title>");        
        out.println("</head>");  
        out.println("<body>");  
        out.println("<h1>Erro: " + e.getMessage() + "</h1>");  
        out.println("</body>");  
        out.println("</html>");      
        out.close();  
      }   
     }else if(comando.equalsIgnoreCase("exclusao")){  
       try {   
         Connection con=null;  
         Statement stm =null;  
         try {  
           //Cira a conexão  
           con = ConexaoBD.Contectar("MySql");  
           //Cria o statements que executam as sentenças sql no banco  
           stm = con.createStatement();  
         } catch (Exception ex) {  
           Logger.getLogger(svCadastro.class.getName()).log(Level.SEVERE, null, ex);  
         }  
         //monta a sentença sql  
         String query = "Delete from alunos where id = "+ request.getParameter("id");  
          //Executa a setença sql no bando de dados    
          stm.executeUpdate(query);   
          //redirencina para a página index.jsp  
          response.sendRedirect("index.jsp");  
      }catch (SQLException e){  
        //Cria uma pagina para exibir o erro  
        PrintWriter out = response.getWriter();  
        out.println("<!DOCTYPE html>");  
        out.println("<html>");  
        out.println("<head>");  
        out.println("<title>Erro</title>");        
        out.println("</head>");  
        out.println("<body>");  
        out.println("<h1>Erro: " + e.getMessage() + "</h1>");  
        out.println("</body>");  
        out.println("</html>");      
        out.close();  
      }   
     }  
   }  
Método processRequest do servlet svCadastro.


Agora vamos criar a página [listar.jsp] onde serão listados todos os registro da tabela [alunos]



 <%--   
   Document  : listar  
   Created on : 10/03/2014, 12:55:13  
   Author   : Raulivan  
 --%>  
 <!--Observe os imports dos pacotes necessários para execução da rotina -->  
 <%@page import="br.com.treinamento.bd.ConexaoBD"%>  
 <%@page import="java.sql.Statement"%>  
 <%@page import="java.sql.Connection"%>  
 <%@page import="java.sql.ResultSet"%>  
 <%@page contentType="text/html" pageEncoding="UTF-8"%>  
 <!DOCTYPE html>  
 <html>  
   <head>  
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
     <title>Lista</title>  
   </head>  
   <body>  
     <h1>Lista de Contatos</h1>  
     <!-- Abaixo será gerada uma tabela dinamica, o numero de linhas será de acordo com o numero  
     de registros da tabela alunos-->  
       <table border="0px" width="800px">  
         <!-- Parte fixa da tabela -->  
         <thead>  
           <tr>  
             <th bgcolor="#93AAB2" width="80px">Id</th>    
             <th bgcolor="#93AAB2" width="300px">Nome</th>  
             <th bgcolor="#93AAB2" width="80px">Disciplina</th>  
             <th bgcolor="#93AAB2" width="180px">Nota</th>   
             <th bgcolor="#93AAB2" width="80px"></th>    
             <th bgcolor="#93AAB2" width="80px"></th>   
           </tr>  
         </thead>  
         <!-- O corpo é gerado dinamicamente -->  
         <tbody>  
           <%  
             ResultSet res =null;  
             Connection con;   
             Statement stm;   
             try {   
               con = ConexaoBD.Contectar("MySql");  
               stm = con.createStatement();    
               res = stm.executeQuery("Select * from alunos");   
             }catch(Exception ex){  
               out.write(ex.getMessage());  
             }  
             while(res.next()){%>  
              <tr>  
               <td><%=res.getInt("Id")%></td>  
               <td><%=res.getString("Nome")%></td>  
               <td><%=res.getString("Disciplina")%></td>  
               <td><%=res.getFloat("Nota")%></td>  
               <td>  
                 <!-- Link para alteração enviando o id do registro que será alterado  
                 obs.: esta rotina não será implementada neste post-->  
                 <a href="svCadastro?cmb=alterar?id=<%=res.getInt("Id")%>">Alterar</a>  
               </td>  
               <td>  
                 <!-- Link para alteração enviando o id do registro que será excluído  
                 obs.: esta rotina não será implementada neste post-->  
                 <a href="svCadastro?cmb=exclusao&id=<%=res.getInt("Id")%>">Excluir</a>  
               </td>  
             </tr>  
             <%}%>  
           </tbody>  
       </table>  
   </body>  
 </html>  
listar.jsp

Espero que tenham gostado, dúvidas, reclamações ou sugestões deixe em seu comentário aí em baixo.

Obrigado.

quarta-feira, 1 de setembro de 2010

Não é possível iniciar o Outlook. Não é possível abrir a janela do Outlook.


Muitos já devem ter se deparado com este erro, mas a solução é simples, veremos passo a passo como resolver este problema:


01) Aperte a tecla Windows + R, abrira o executar

02) Agora digite OUTLOOK /RESETNAVPANE e pressione OK

03) Pronto pode abrir o Outlook que ele funcionará normalmente.

Mas você deve estar pensando que diáboa faz esta linha de comando??

A resposta é mais simples ainda, normalmente quando desligamos nossa maquina por motivos não identificáveis por mim até hoje, o Outlook fecha de maneira errada. A solução é “limpar e gerar novamente o painel de navegação do perfil atual” é exatamente o que o comando RESETNAVPANE faz.

Existem outros comandos que podem ser aplicados no Outlook, mas isso é tema de uma outra postagem. Até a próxima.

sábado, 28 de agosto de 2010

Como instalar JAVA 3D no Eclipse

Iremos demonstrar neste artigo instalação do Java3D passo a passo


1) Primeiramente é necessário realizar a instalação deste executável j3d-1_5_2-windows-i586 (Donwload).

2) Após a instalação caso você esteja utilizando o Windows 7 é necessário copiar a seguintes DLLs para a pasta C:\Windows\System\ de seu sistema operacional j3dcore-d3d.dll, j3dcore-ogl.dll, j3dcore-ogl-cg.dll e j3dcore-ogl-chk.dll, estas dlls se encontram na pasta C:\Program Files\Java\Java3D\1.5.2\bin

3) Agora abra o Eclipse clique com o botão direito em cima de seu projeto e vá em Propriedades e depois clique em Java Build Path

4) Clique em Add External JARs e adicione os três arquivos que estão na no diretório C:\Program Files\Java\Java3D\1.5.2\lib\ext

5) Agora é necessário liberar permissão aos arquivos, clique novamente com o botão direito em seu projeto e clique em Propriedades e depois clique em Java Build Path, expanda o item JER System Libary [JavaSE-1.6] e clique em Acess Rules.

6) Clique no Botão ADD, no item Resolution defina como Accessible e em Rule Pattern informe o seguinte caminho javax/media/j3d/* e clique em OK. Repita o mesmo processo alterando a propriedade Rule Pattern para com/sun/j3d/** e depois para javax/vecmath/*

7) Pronto, após isso só mandar a ver na programação.



Qualquer duvida estarei disposto a ajudar basta enviar para fonteocx@isistemas.net

Não consigo exibir arquivos ocultos

Neste artigo vamos resolver um problema que muitos vírus causam em nosso computado, que é bloquear a exibição dos arquivos ocultos, mesmo quando definimos lá em Ferramentas/Opções de pastas.

Vejamos passo a passo como corrigir este problema.

1) Vá em Iniciar -> Executar -> digite regedit -> dê Ok.

2) Localize a seguinte subchave:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr entVersion\ Explorer\Advanced\Folder\Hidden\SHOWALL

3) Verifique o valor de CheckedValue. Ele deve ser do tipo REG_DWORD. Se for, siga para o passo 4; caso contrário pule para o passo 5.

4) Dê um duplo-clique para editar a entrada. Em "Dados do valor" coloque o número 1-> dê Ok e saia do Editor do Registro.

5) Caso o tipo do valor CheckedValue seja REG_SZ será necessário apagá-lo (delete-o e confirme). Clique com o botão direito sobre a chave SHOWALL -> Novo -> Valor DWORD. Escreva CheckedValue no campo nome. Dê duplo-clique sobre o mesmo, altere o valor de dados para 1, dê Ok e saia do Editor do Registro.

Seu novo valor de registro deverá ficar assim:

Nome - Tipo - Dados

CheckedValue REG_DWORD 0x00000001(1)

6) Verifique se os arquivos ocultos já podem ser visualizados.

Um abraço e até a próxima.

sexta-feira, 19 de fevereiro de 2010

Informática e Sociedade

Baixe todo conteúdo da matéria de Informática e Sociedade do curso de Sistemas de Informação e Ciência da Computação.

sexta-feira, 15 de janeiro de 2010

Processadores Core i7

Os processadores Core i7 da Intel. Segundo a empresa, os novos chips são os “processadores mais avançados de todos os tempos“, e trazem ganho de desempenho de até 40% em determinados cenários de uso, sem aumento significativo no consumo de energia, quando comparados aos atuais processadores da família Core 2 Duo.

Com quatro núcleos em um único chip (Quad-Core), os processadores Core i7 contam com tecnologias como “Hyper-Threading” e “Turbo Boost“, que aumentam o desempenho da máquina, seja possibilitando a execução de mais tarefas simultâneamente, seja ajustando o desempenho e consumo de energia de cada núcleo individual automaticamente de acordo com as necessidades a cada momento.

Além disso, os processadores fazem uso de tecnologias como os transístores “power gate“, que tem menor consumo de energia, e o sistema de interconexão Intel Quickpath, que possibilita transferências de dados entre a memória e o processador com muito mais velocidade, eliminando gargalos de desempenho.

Em benchmarks de jogos com o 3DMark Vantage, em categorias como “Física no Processador” e “Inteligência Artificial”, os novos processadores Intel Core i7 tem desempenho 40% superior a um Core 2 Extreme de clock similar. Em benchmarks de cálculo como o SPECTint_base_rate2006 um Core i7 chegou à marca dos 117 pontos. Foi a primeira vez na história que um único processador ultrapassou a barreira dos 100 pontos neste teste.

A princípio chegam ao mercado três modelos: O mais “em conta” é o Intel Core i7 920, com clock de 2.66 GHz, com preço sugerido de US$ 248 dólares a unidade (R$439,34). O modelo intermediário é o Intel Core i7 940, com clock de 2.93 GHz por US$ 562 (R$995,59) e o top de linha é o Intel Core i7 965 Extreme Edition, voltado a gamers e entusiastas, com clock de 3.20 GHz (sem limitação contra overclock) e preço sugerido de US$ 999 (R$1.769,73).

Todos os modelos tem 8 MB de cache L3, suporte a memória DDR3-1066 e dissipação de 130 Watts. Para acompanhar os chips, várias empresas estão produzindo placas-mãe baseadas no novo chipset X58, da Intel. A ECS Elitegroup tem a X58B-A Black Series, e a MSI tem modelos da Série Eclipse.

Quem prefere PCs montados também tem opções. Cinco fabricantes nacionais (Accept, CCE, Megaware, Nova e Positivo) já anunciaram modelos baseados nos novos processadores, que devem chegar ao mercado em breve, em redes como o Carrefour, Extra, FNAC, Ponto Frio e Submarino.

A primeira empresa a anunciar uma configuração e preço foi a Megaware com seu MegaPRO: um micro equipado com um processador Intel Core i7 920 de 2.66 GHz, 4 GB de RAM, HD de 500 GB e placa de vídeo (não especificada) com 1 GB de memória, por R$ 3.999. A máquina estará disponível, a princípio, já nesta semana exclusivamente nas lojas das redes Extra e FNAC.

quinta-feira, 7 de janeiro de 2010

DVD

DVD (abreviação de Digital Video Disc ou Digital Versatile Disc, em português, Disco Digital de Vídeo ou Disco Digital Versátil). Contém informações digitais, tendo uma maior capacidade de armazenamento que o CD, devido a uma tecnologia óptica superior, além de padrões melhorados de compressão de dados. O DVD foi criado no ano de 1996.

Os DVD possuem por padrão a capacidade de armazenar 4,7 GB de dados, enquanto que um CD armazena em média de 700 MB(cerca de 14,6 % da capacidade de um DVD). Os chamados DVD de dual-layer (dupla camada) podem armazenar até 8,5 GB. Apesar da capacidade nominal do DVD comum gravável, é possível apenas gravar 4.484 MB de informações, e com o tamanho máximo de cada arquivo de 1 GB numa gravação normal. O tamanho máximo de arquivo varia conforme o tipo de gravação: UDF, ISO normal, DVD-video etc. Por exemplo, para gravar um arquivo com cerca de 2 GB, é necessário escolher a opção UDF mode. Apresenta resolução de 500 linhas (horizontais). A qualidade de imagem e som do DVD são bem superiores as das fitas de video VHS.





O que são Zonas de compilação dos DVDs???
Dado a data de lançamento de um filme variar de país para país, para evitar que o público compre um filme antes que ele seja exibido no cinema do seu país e como medida de proteção desse mercado, os editores de DVD dividiram o mundo em seis zonas. Deste modo, por exemplo, um DVD editado na zona 1 não pode ser lido por um leitor de DVD da zona 2. Existe, no entanto, uma grande variedade de leitores multi-zona que permitem ler o DVD, independentemente da região a que pertencer.


Tipos de DVD

DVD-R: somente permite uma gravação e pode ser lido pela maioria de leitores de DVD;
DVD+R: somente permite uma gravação, pode ser lido pela maioria de leitores de DVD e é lido mais rapidamente para backup;
DVD+R DL (dual-layer): semelhante ao DVD+R, mas que permite a gravação em dupla camada, aumentando a sua capacidade de armazenamento.
DVD-RW: permite gravar e apagar cerca de mil vezes;
DVD+RW: é uma evolução do DVD-RW. Também permite gravar e apagar cerca de mil vezes, mas possui importantes aperfeiçoamentos, em especial uma compatibilidade muito maior com os DVD Players, a possibilidade de editar o conteúdo do DVD sem ter de apagar todo o conteúdo que já estava gravado e um sistema de controle de erros de gravação. Todos os formatos de DVD com o símbolo + (mais) são apoiados pela Dell, Hewlett-Packard, Mitsubishi/Verbatim, Philips, Ricoh, Sony, Thomson e Yamaha, através da DVD+RW Alliance.
DVD+RW DL: possui duas camadas de gravação, o que dobra a sua capacidade de armazenamento.
DVD-RAM: permite gravar e apagar mais de cem mil vezes. A gravação e a leitura são feitos em uma série de círculos concêntricos, um formato que se aproxima mais do que ocorre nos discos rígidos (em todos os demais tipos de DVD, e também de CD, a gravação é feita em uma única linha contínua, uma espiral que parte do centro e termina na borda externa). Daí decorre o nome "gravação aleatória" (nos demais DVD, ela seria contínua). Permite editar o conteúdo do DVD sem ter de apagar todo o conteúdo que já estava gravado. Oferece a possibilidade de gravação e leitura simultâneas (time shift) sem o risco de apagar a gravação. Compatível com poucos leitores de DVD. Possui uma única camada de gravação. Capacidade: versão 1.0 - de 2,58 GB (um lado) a 5,16 GB (dois lados), e versão 2.0 - de 4,7 GB (um lado) e 9,4 GB (dois lados). Formato apoiado pela Hitachi, LG, Maxell, Matsushita (Panasonic), Samsung, Toshiba e JVC, através do RAM Promotion Group (RAMPRG)[4]. Em 2007, o custo do DVD-RAM é de aproximadamente quatro vezes o preço do DVD+RW, seu concorrente.

fonte:wikipedia