2016-07-09 24 views
0
public static void getContacts() throws SQLException{ 
String[] splited=null; 
BufferedReader br = null; 

    try { 
     String sCurrentLine; 
       br = new BufferedReader(new FileReader("C:\\Users\\Wijdan\\Desktop\\2016_07_09.txt")); 
     while ((sCurrentLine = br.readLine()) != null) { 
     String checkSql = "select count(*) from contacts where Name = '"+name+"' and Phone='"+age+"'"; 

    Statement st = con.createStatement(); 
    ResultSet result = st.executeQuery(checkSql); 
    result.next(); 

     splited = sCurrentLine.split(":"); 
    name=splited[0]; 
    age=splited[1]; 
    String sql="Insert into contacts(Name,Phone) values('"+name+"','"+age+"')"; 
    pst=con.prepareStatement(sql); 

    pst.executeUpdate(); 

    String pp=splited[0]; 
    String pp1=splited[1]; 


     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      if (br != null)br.close(); 
     } catch (IOException ex) { 
      ex.printStackTrace(); 
        } 
    } 

     } 

Ich habe eine Methode, die Telefonkontakte aus einer Datei liest und speichert Daten in der Datenbank, wie man die Kontakte zu speichern, wenn es einige zu speichern? und gehe zum nächsten Kontakt.Stoppen der gleichen Daten beim Lesen aus einer Datei hinzugefügt werden

Antwort

0

Eine Lösung wäre eine unique constraint auf dem Feld gesetzt werden Sie wollen fangen nicht sehen dupliziert

ALTER TABLE contacts 
ADD CONSTRAINT contact_unique_name_phone UNIQUE (Name,Phone) 

Dann SQLIntegrityConstraintViolationException

Yout while-Schleife etwas werden würde wie:

while ((sCurrentLine = br.readLine()) != null) { 
     try { 
     // your code 

     } catch(SQLIntegrityConstraintViolationException e){ 
      sCurrentLine = br.readLine(); 
     } 
    }