Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    37

    Java Problema Inserimento Stringhe Con Apostrofo

    SALVE QUESTO PROGRAMMA LEGGE UN INTERA COLONNA DI UN ADATABASE DRAMITE ODBC E VA AD INSERIRE IN UNA TABELLA DI UN DATABASE MYSQL,
    ALCUNI CAMPI DELLA TABELLA CONNESSA IN ODBC, IL PROBLEMA è CHE L'INSERIMENTO SI STOPPA QUANDO LEGGE UNA STRINGA DOVE è PRESENTE UN APOSTROFO.COME POSSO RISOLVERE ??
    codice:
    import java.io.*;
    import java.sql.*;
    
    
    
    public class AggVtiger 
    {
    String query;
    Statement stmnt;
    ResultSet rs;
    Connection conn = null;
                                              private String clicodice ;
                                              private String clicodicealt ;
                                              private String clidescri1 ;
                                              private String clidescri2 ;
                                              private String clitel ;
                                              private String telex ;
                                              private String fax ;
                                              private String email;
                                              private String codicestato ;
                                              String clidescri;
                                              
                                              
        
        
    
            
           public static void caricaDriver() {     
            
                                            try {
                                                  Class.forName("com.mysql.jdbc.Driver");
                                                }
                                                  catch (Exception e){
                                                  System.err.println("Errore driver DB!");
                                                  System.err.println(e.getMessage());
                                                                     }
                                                           }  
        
    public  Connection connetti() throws SQLException {
     //apro la connessione al DB
    //conn=DriverManager.getConnection("jdbc:mysql://localhost/dillo", "root", "");
                                                                                                             conn=DriverManager.getConnection("jdbc:mysql://localhost/dillo", "root", "dillo");
                                                                                                                                return conn;
                                                                                                                                           }
        public void aggiornamento() throws IOException,SQLException 
           {      
           	try {
           	
           	      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                  Connection con = DriverManager.getConnection("jdbc:odbc:G2_BMB");
                  Statement stmt = con.createStatement();
                  ResultSet rs = stmt.executeQuery("SELECT * FROM CLI");
                  
                  while(rs.next()){
                                                                                        String clidescri1 = rs.getString(3);
                                                                                        System.out.print("\n");
                                              //System.out.print(clidescri1);
                                              clidescri = clidescri1.replaceAll("'","'");
                                              
                                              
                                               System.out.print(clidescri);
                                               
           	                                   inserisci(clidescri);
           	
           	} // try
               stmnt.close();
    rs.close();      
                  }
                  
       
           	   
                  
                  catch( Exception e ) {e. printStackTrace();}
                  
        	}
        	
        		public  void inserisci (String clidescri)throws SQLException
        {   
        
    
        	query ="";
        	query = "INSERT INTO mas(nome) VALUES('"+clidescri+"')";
        	stmnt = conn.createStatement();
            stmnt.executeUpdate(query);
            
    
      
    
        }
        	
        	public static void main(String[] args) throws  Exception{
    	try {
    	
    	
    		
    		
    	
        AggVtiger d = new AggVtiger();
        d.caricaDriver();
        d.connetti();
        d.aggiornamento();
        
        
    
       
        
    	}
       
    	
      catch (SQLException e) {
    e.printStackTrace();
    
    }
    }
      
    
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318
    Usando i PreparedStatement al posto dei normali Statement... altrimenti dovrai parsare le stringhe in cerca degli apici (che sono parte integrante delle istruzioni SQL) ed occuparti tu del quoting, sostituendo il singolo apice con la coppia \ '.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    37
    scusa io sostituendi i stantement con i preparedStantement ho fatto cosi ma continua a non funzionare
    codice:
    public class AggVtiger 
    {
    String query;
    PreparedStatement stmnt1;
    Statement stmnt;
    ResultSet rs;
    Connection conn = null;
                                              private String clicodice ;
                                              private String clicodicealt ;
                                              private String clidescri1 ;
                                              private String clidescri2 ;
                                              private String clitel ;
                                              private String telex ;
                                              private String fax ;
                                              private String email;
                                              private String codicestato ;
                                              String clidescri;
                                              
                                              
        
        
    
            
                        public static void caricaDriver() {     
            
                                            try {
                                                  Class.forName("com.mysql.jdbc.Driver");
                                                }
                                                  catch (Exception e){
                                                  System.err.println("Errore driver DB!");
                                                  System.err.println(e.getMessage());
                                                                     }
                                                           }  
        
                                                                                                public  Connection connetti() throws SQLException {
                                                                                                           //apro la connessione al DB
                                                                                                           //conn=DriverManager.getConnection("jdbc:mysql://localhost/dillo", "root", "");
                                                                                                             conn=DriverManager.getConnection("jdbc:mysql://localhost/dillo", "root", "dillo");
                                                                                                                                return conn;
                                                                                                                                           }
        public void aggiornamento() throws IOException,SQLException 
           {      
           	try {
           	String SQL = "SELECT * FROM CLI";
           	      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                  Connection con = DriverManager.getConnection("jdbc:odbc:G2_BMB");
                  PreparedStatement stmt1 = con.prepareStatement(SQL);
                  ResultSet rs = stmt1.executeQuery();
                  
                  while(rs.next()){
                                              String clicodice = rs.getString(1);
                                              String clicodicealt = rs.getString(2);
                                              String clidescri1 = rs.getString(3);
                                              String clidescri2 = rs.getString(4);
                                              String clitel =rs.getString(10);
                                              String telex =rs.getString(11);
                                              String fax =rs.getString(12);
                                              String email =rs.getString(172);
                                              String codicestato = rs.getString(49);
                                              //inserisci();
                                              System.out.print("\n");
                                              //System.out.print(clidescri1);
                                              clidescri = clidescri1.replaceAll("'","'");
                                              
                                              
                                               System.out.print(clidescri);
                                               
           	                                   inserisci(clidescri);
           	
           	} // try
               stmnt.close();
    rs.close();      
                  }
                  
       
           	   
                  
                  catch( Exception e ) {e. printStackTrace();}
                  
        	}
        	
        		public  void inserisci (String clidescri)throws SQLException
        {   
        
    
        	query ="";
        	query = "INSERT INTO mas(nome) VALUES('"+clidescri+"')";
        	stmnt1 = conn.prepareStatement(query);
        	
            stmnt1.executeUpdate();
            //stem.out.println(rs);
            //stmnt.close();
    //rs.close();
    //stem.out.println("finito") ;
      
    
        }
        	
        	public static void main(String[] args) throws  Exception{
    	try {
    	
    	
    		
    		
    	
    	/* Conne c = new Conne ();
    	c.caricaDriver();
        c.connetti();
        //c.estrazione();
        */
        AggVtiger d = new AggVtiger();
        d.caricaDriver();
        d.connetti();
        d.aggiornamento();
        
        
    
       
        
    	}
       
    	
      catch (SQLException e) {
    e.printStackTrace();
    
    }
    }
      
    
    }

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318
    Non si usano così i PreparedStatement. Ecco un esempio, per inserire un record di 3 stringhe in una tabella:

    codice:
    String stringa1 = "Pippo";
    String stringa2 = "Pluto";
    String stringa3 = "Paperino";
    
    PreparedStatement stmt = con.prepareStatement("INSERT INTO tabella VALUES(?,?,?);");
    stmt.setString(1, stringa1);
    stmt.setString(2, stringa1);
    stmt.setString(3, stringa1);
    
    int numRecords = stmt.executeUpdate();
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    37
    grazzie mille risolto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.