Erro na execução sql.Sqlexeption. Sqlite only supports TYPE_FORWARD_ONLY

4 respostas
java
A

Bom dia a todos,

Estou voltando a mundo Java depois de um tempo, eu tenho projetinho desktop que eu estou sempre implementando alguma coisa para aprender mais sobre a linguagem porém me deparei com problema… conforme print

O banco de dados que estou usando SQLite…

alguém poderia dar alguma dica por favor.!

4 Respostas

R

Mostra o código.

A
package br.com.bd.conexao;

/**
 *
 * @author Adailton
 */

import br.com.cadastro.contato.ContatoEmpresa;
import br.com.cadastro.representante.RepresentanteEmpresa;
import br.com.cadastro.empresa.Empresa;
import java.sql.*;
import java.lang.*;
import javax.swing.*;

public class BdConexaoDAO{
	
	private Connection cn;
	public PreparedStatement st;	
        public Statement statement;       
        public ResultSet resultset;
        
	public void abreConexao(){                                  
           
                
           String conexao = ("jdbc:sqlite:C:/SisCom/BaseDados/BDSISCOM.db"); 
                                try {
                    Class.forName("org.sqlite.JDBC");
                    cn = DriverManager.getConnection(conexao); 
		}
                 catch (ClassNotFoundException ex) {
			JOptionPane.showMessageDialog(null,
                                "Erro ao tentar conectar o banco de dados", 
                                "Erro", JOptionPane.ERROR_MESSAGE);
			System.exit(0);
        
		}
		
		catch(SQLException ex){
			
			JOptionPane.showMessageDialog(null, 
                                "Problemas com a conexão", "Erro",
                                JOptionPane.ERROR_MESSAGE);
		
		}	
	}
		
	public void fechaConexao(){
			
		try {
			cn.close();
			st.close();
		}
		catch (SQLException e) {
			
			JOptionPane.showMessageDialog(null, 
                                "Erro ao tentar fechar o banco de dados");
		}    
        }
             
         public void executeSQL(String sql)
       {
            try 
            {
                statement = cn.createStatement(
                        ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
                resultset = statement.executeQuery(sql);
            }
            catch(SQLException sqlex) 
            {
               JOptionPane.showMessageDialog(null,"Não foi possível "+
                       "executar o comando sql,"+sqlex+", o sql passado foi "+sql);
            }

       }
        
        // Carrega Combo
	public void carregaDepto(JComboBox combo){		
		
		abreConexao();		
		String sql;
                
		try {
                    sql = "select distinct Depto from tbDepartamento";		
		    st = cn.prepareStatement(sql);
		    resultset = st.executeQuery();		
		    while(resultset.next()){
                    combo.addItem(resultset.getString("Depto"));		
			}
                }
		
		catch(SQLException e){
                    JOptionPane.showMessageDialog(null, 
                            "Ocorreu o seguinte erro:\n " + e.toString(), 
                            "Erro", JOptionPane.ERROR_MESSAGE);
			
		}		
		fechaConexao();	
	}	
        
        public void carregaTipoEmpresa(JComboBox combo){
            abreConexao();
            String sql;
            try{
                sql = "select distinct NTipoEmpresa from tbTipoEmpresa";
                st = cn.prepareStatement(sql);
                resultset = st.executeQuery();
                while (resultset.next()){
                    combo.addItem(resultset.getString("NTipoEmpresa"));
                }
            }
            
            catch (SQLException e){
                
                JOptionPane.showMessageDialog(null,
                        "Ocorreu o seguinte erro:\n " + e.toString(), 
                        "Erro", JOptionPane.ERROR_MESSAGE);                
            }
            fechaConexao();
        }
        
        public void carregaRepresentante(JComboBox combo){
            
            abreConexao();
            String sql;
            try{
                sql = "select distinct Nome from tbRepresentante";
                st = cn.prepareStatement(sql);
                resultset = st.executeQuery();
                while (resultset.next()){
                    combo.addItem(resultset.getString("Nome"));
                }
            }
            
            catch (SQLException e){
                
                JOptionPane.showMessageDialog(null, 
                        "Ocorreu o seguinte erro:\n " + e.toString(), 
                        "Erro", JOptionPane.ERROR_MESSAGE);                
            }
            fechaConexao();
        }
        
        public void carregaStatus(JComboBox combo){
            
            abreConexao();
            String sql;
            try{
                sql = "select distinct Status from tbStatus";
                st = cn.prepareStatement(sql);
                resultset = st.executeQuery();
                while (resultset.next()){
                    combo.addItem(resultset.getString("Status"));
                }
            }
            
            catch (SQLException e){
                
                JOptionPane.showMessageDialog(null, 
                        "Ocorreu o seguinte erro:\n " + e.toString(), 
                        "Erro", JOptionPane.ERROR_MESSAGE);                
            }
            fechaConexao();
        }
        
         public void carregaGrupo(JComboBox combo){
            
            abreConexao();
            String sql;
            try{
                sql = "select distinct Grupo from tbGrupo";
                st = cn.prepareStatement(sql);
                resultset = st.executeQuery();
                while (resultset.next()){
                    combo.addItem(resultset.getString("Grupo"));
                }
            }
            
            catch (SQLException e){
                
                JOptionPane.showMessageDialog(null, 
                        "Ocorreu o seguinte erro:\n " + e.toString(), 
                        "Erro", JOptionPane.ERROR_MESSAGE);                
            }
            fechaConexao();
        }     
         
         public void carregaRegiao(JComboBox combo){
            
            abreConexao();
            String sql;
            try{
                sql = "select distinct Regiao from tbRegiao";
                st = cn.prepareStatement(sql);
                resultset = st.executeQuery();
                while (resultset.next()){
                    combo.addItem(resultset.getString("Regiao"));
                }
            }
            
            catch (SQLException e){
                
                JOptionPane.showMessageDialog(null, 
                        "Ocorreu o seguinte erro:\n " + e.toString(), 
                        "Erro", JOptionPane.ERROR_MESSAGE);                
            }
            fechaConexao();
        }     
         
         public void carregaRedeSocial(JComboBox combo){
            
            abreConexao();
            String sql;
            try{
                sql = "select distinct Rede_Social from tbRedeSocial";
                st = cn.prepareStatement(sql);
                resultset = st.executeQuery();
                while (resultset.next()){
                    combo.addItem(resultset.getString("Rede_Social"));
                }
            }
            
            catch (SQLException e){
                
                JOptionPane.showMessageDialog(null, 
                        "Ocorreu o seguinte erro:\n " + e.toString(), 
                        "Erro", JOptionPane.ERROR_MESSAGE);                
            }
            fechaConexao();
        } 
         
        
         public void carregaNomeEmpresa(JComboBox combo){
            
            abreConexao();
            String sql;
            try{
                sql = "select distinct Razao_Social from tbEmpresa";
                st = cn.prepareStatement(sql);
                resultset = st.executeQuery();
                while (resultset.next()){
                    combo.addItem(resultset.getString("Razao_Social"));
                }
            }
            
            catch (SQLException e){
                
                JOptionPane.showMessageDialog(null, 
                        "Ocorreu o seguinte erro:\n " + e.toString(), 
                        "Erro", JOptionPane.ERROR_MESSAGE);                
            }
            fechaConexao();
        }        
        
                 
         
         public void carregaUf(JComboBox combo){
            abreConexao();
            String sql;
            try{
                sql = "select distinct ufCidade from tbCidade";
                st = cn.prepareStatement(sql);
                resultset = st.executeQuery();
                while (resultset.next()){
                    combo.addItem(resultset.getString("ufCidade"));
                }
            }
            
            catch (SQLException e){
                
                JOptionPane.showMessageDialog(null, 
                        "Ocorreu o seguinte erro:\n " + e.toString(), 
                        "Erro", JOptionPane.ERROR_MESSAGE);                
            }
            fechaConexao();
        }
         
         public void carregaSelecaoCidade(JComboBox combo, JComboBox c ){
            abreConexao();
            String sql;
            
            try{
                sql = "select nomeCidade, codCidade from tbCidade "
                        + "where ufCidade='"+combo.getSelectedItem()+"'";                
                st = cn.prepareStatement(sql);
                resultset = st.executeQuery();
                while (resultset.next()){
                    c.addItem(resultset.getString("nomeCidade"));
                }
            }
            
            catch (SQLException e){
                
                JOptionPane.showMessageDialog(null, 
                        "Ocorreu o seguinte erro:\n " + e.toString(), 
                        "Erro", JOptionPane.ERROR_MESSAGE);                
            }
            fechaConexao();
        
         }
         
          public Empresa localizaPorNomeEmpresa(String n){
             
             int Empresa = 0;             
             Empresa cadEmp = new Empresa();             
             String sql;
             
             sql = "select * from tbempresa where razao_social like '"+ n +"%'";   
             
             try{
                 abreConexao();
                 st = cn.prepareStatement(sql);
                 resultset = st.executeQuery();
                 
                 while(resultset.next()){   
                     
                     Empresa = resultset.getRow();
                 }
             } 	
             
             catch (SQLException e) {
                 e.printStackTrace();                 
			JOptionPane.showMessageDialog(null,
                                "Ocorreu o seguinte erro:\n " + e.toString(), "Erro", 
                                JOptionPane.ERROR_MESSAGE);
			
		}
             
             try{
                 
                 DefaultListModel modelo = new DefaultListModel();
                 st = cn.prepareStatement(sql);
                 resultset = st.executeQuery();
				
			if(Empresa > 1){
                            
                            String opcoes[] = {"Acessar","Cancelar"};
                            JList lista = new JList(modelo);
                            JScrollPane barra = new JScrollPane(lista);
                            
                            modelo.toString();	
                            
                            cadEmp.setNome("");
                            while(resultset.next()){ 
                                
                                modelo.addElement(resultset.getInt("ID_EMPRESA"));
                                modelo.addElement(resultset.getString("RAZAO_SOCIAL"));
                            
                            } 
                            
                            
                            int res = JOptionPane.showOptionDialog(null, barra, 
                                    
                                    "Registros Localizados", 
                                    JOptionPane.OK_CANCEL_OPTION, 
                                    JOptionPane.PLAIN_MESSAGE, null, opcoes, opcoes[0]);
                                    
                            if (res == JOptionPane.OK_OPTION){
                                
                                sql = "SELECT * FROM TBEMPRESA WHERE RAZAO_SOCIAL='" 
                                        +lista.getSelectedValue()+"'"; 
                                
                                st = cn.prepareStatement(sql);                                 
                                resultset = st.executeQuery();
                                while(resultset.next()){  
                                    cadEmp.setCodigo_Empresa(resultset.getString("ID_EMPRESA")); 
                                    cadEmp.setNome(resultset.getString("RAZAO_SOCIAL"));
                                }
                            }	
                        }  
                        else{
                            
                            while(resultset.next()){
                                cadEmp.setCodigo_Empresa(resultset.getString("ID_EMPRESA"));
                                cadEmp.setNome(resultset.getString("RAZAO_SOCIAL"));
                            }
                        }
             }
             
             catch(SQLException e){
                 e.printStackTrace();  
                 
                 JOptionPane.showMessageDialog(null,
                         "Ocorreu o seguinte erro:\n " + e.toString(), 
                         "Erro", JOptionPane.ERROR_MESSAGE);
             }	
             
             fechaConexao();
             return(cadEmp);
         }          
            

          // Cadastra Contato
    public String CadastroContato(ContatoEmpresa contEmp ){ 
             
             String sql = ""; 
             String ok = "nao"; 
             abreConexao(); 
             int codigoDepto = 0; 
             int cod = 0; 
             
             
             try{ 
                 
                 sql = "select * from tbdepartamento where depto='"+contEmp.getDepartamento()+"'";
                 
                 st = cn.prepareStatement(sql);
                 resultset = st.executeQuery(); 
                 
                 
                 while(resultset.next()){ 
                     
                     codigoDepto = resultset.getInt("Id_Depto"); 
                 } 
             
             }	
             
             catch(SQLException e){ 
                 e.printStackTrace();
                 JOptionPane.showMessageDialog(null, 
                         "Ocorreu o seguinte erro:\n " + e.toString(), 
                         "Erro", JOptionPane.ERROR_MESSAGE); 
             } 
             
             try{ 
                 
                 sql = "select * from tbcontato where id_contato="+ contEmp.getCodigo_contato(); 
                 
                 st = cn.prepareStatement(sql);	
                 resultset = st.executeQuery(); 
                 
                 while(resultset.next()){ 
                     cod = resultset.getInt("id_contato"); 
                 } 
                 
                 if(cod != 0){
                     
                     JOptionPane.showMessageDialog(null,
                             "Esse Codigo pertence a outro Contato",                             
                             "Aviso", JOptionPane.ERROR_MESSAGE); 
                     
                     ok = "mesmo";
                 }	
                 else{ 
                     
                     sql = "insert into tbcontato" 
                             + "(Id_Empresa,Nome, Telefone, Fax, " 
                             + "Celular, Nextel, Email1,"
                             + "Email2,Rede_Social,Nome_RSocial,linha_Compra, Id_DeptoContato ) VALUES " 
                             
                             +"('" +contEmp.getCodigo_empresa() 
                             +"','"+contEmp.getNome_contato() 
                             +"','"+contEmp.getTelefone_contato()
                             +"','"+contEmp.getFax_contato()
                             +"','"+contEmp.getCelular_contato() 
                             +"','"+contEmp.getId_nextel_contato()
                             +"','"+contEmp.getEmail1_contato() 
                             +"','"+contEmp.getEmail2_contato() 
                             +"','"+contEmp.getRede_Social()
                             +"','"+contEmp.getNome_Rede_Social()
                             +"','"+contEmp.getProd_compra_contato()
                             
                             +"','"+codigoDepto+"');"; 
                     
                     
                     st = cn.prepareStatement(sql); 
                     st.executeUpdate(); 
                     
                     ok = "sim"; 
                 } 
             }	
             
             catch(SQLException e){ 
                 e.printStackTrace();              
                 
                 JOptionPane.showMessageDialog(null,
                     "Ocorreu o seguinte erro:\n " + e.toString(), 
                     "Erro", JOptionPane.ERROR_MESSAGE); 
             }	
             
             fechaConexao(); 
             return(ok); 
         }
    
    
        public String AtualizacadastroContato (ContatoEmpresa ContEmp){
        
        
   
        abreConexao();
        
        String msg = "";
        String sql = "";
       
        
        int Codigo_empresa = ContEmp.getCodigo_empresa();     
        String Nome_contato = ContEmp.getNome_contato();
        String Telefone_contato = ContEmp.getTelefone_contato();
        String Fax_contato = ContEmp.getFax_contato();
        String Celular_contato = ContEmp.getCelular_contato();
        String Id_nextel = ContEmp.getId_nextel_contato();
        String Email1_contato = ContEmp.getEmail1_contato();
        String Email2_contato = ContEmp.getEmail2_contato();
        String Rede_Social = ContEmp.getRede_Social();
        String Nome_Rede_Social = ContEmp.getNome_Rede_Social();
        String Prod_compra = ContEmp.getProd_compra_contato();
        int Departamento = ContEmp.getID_Depto();
        
       
        try{
            sql = "update tbcontato set "
                    + "Id_Empresa = '"+Codigo_empresa+"',"
                    + "Nome = '"+Nome_contato+"',"                   
                    + "Telefone = '"+Telefone_contato+"',"
                    + "Fax = '" +Fax_contato+"',"
                    + "Celular = '"+Celular_contato+"',"
                    + "Nextel = '"+Id_nextel+"',"
                    + "Email1 = '"+Email1_contato+"',"
                    + "Email2 = '"+Email2_contato+"',"  
                    + "Rede_Social = '"+Rede_Social+"',"
                    + "Nome_RSocial = '"+Nome_Rede_Social+"',"
                    + "linha_Compra = '"+Prod_compra+"',"
                    + "Id_DeptoContato =" +Departamento;    
            sql += " where Id_Contato in ("+ContEmp.getCodigo_contato()+")";
            st = cn.prepareStatement(sql);
	    st.executeUpdate();
            msg = "Dados Atualizados com Sucesso";  
        
        }
        
        catch (SQLException ex){
            ex.printStackTrace();  
            
            msg = "\tOcorreu o seguinte erro: \n" + ex.toString();
        }
                
        return (msg); 
        
    }
    

       
     public String cadastrarepresentante(RepresentanteEmpresa repEmp ){ 
             
         
         
         
             String sql = ""; 
             String ok = "nao"; 
             abreConexao(); 
             String codigoDepto = ""; 
             int cod = 0;             
             
            
             
             try{ 
                 
                 sql = "select * from tbRepresentante where Id_Representante="+ repEmp.getCodigo_representante(); 
                 
                 st = cn.prepareStatement(sql);	
                 resultset = st.executeQuery(); 
                 
                 while(resultset.next()){ 
                     cod = resultset.getInt("Id_Representante"); 
                 } 
                 
                 if(cod != 0){
                     
                     JOptionPane.showMessageDialog(null,
                             "Esse Codigo pertence a outro Contato",                             
                             "Aviso", JOptionPane.ERROR_MESSAGE); 
                     
                     ok = "mesmo";
                 }	
                 else{ 
                     
                     sql = "insert into tbRepresentante" 
                             + "(Nome, Telefone, Fax, " 
                             + "Celular, Email ) values " 
                             
                             +"('" +repEmp.getNome_representante()
                             +"','"+repEmp.getTelefone_representante()
                             +"','"+repEmp.getFax_representante()
                             +"','"+repEmp.getCelular_representante()                           
                             +"','"+repEmp.getEmail_representante()                           
                           
                          
                             +"');"; 
                     
                     
                     st = cn.prepareStatement(sql); 
                     st.executeUpdate(); 
                     ok = "sim"; 
                 } 
             }	
             
             catch(SQLException e){ 
                 e.printStackTrace();              
                 
                 JOptionPane.showMessageDialog(null,
                     "Ocorreu o seguinte erro:\n " + e.toString(), 
                     "Erro", JOptionPane.ERROR_MESSAGE); 
             }	
             fechaConexao(); 
             return(ok); 
         }  
}
R

SQLite suporta apenas TYPE_FORWARD_ONLY

A

Valeu amigo obrigado deu certo…

Eu estava usando Mysql estava funcionado normal, mais mudei para Sqlite ai deu esse BO.

Criado 24 de maio de 2021
Ultima resposta 24 de mai. de 2021
Respostas 4
Participantes 2