Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > пробелы в строке


Автор: viktorrrrrr 17.9.2008, 11:27
всем  привет возникла проблема при импорте в базу 
мещаю пробелы в строке
Код

       2;Dorfstr. 1 Wohngemeinscha ;39606  ;Meseberg                  
       3;Zettlersweg 6a            ;39606  ;Iden                      
       4;Priemern Nr.2             ;39606  ;Bretsch                   
       5;Krumker Strasse 7         ;39606  ;Osterburg                 
       6;Bahnhofstr. 6a            ;39624  ;Meßdorf                   



как их удалитъ

Автор: DenisSh 17.9.2008, 11:34
Если удалить пробелы то функция String.trim(). Но видимо вы просто неправильно вставляете базу, должны быть кавычки

Код

      2;"Dorfstr. 1 Wohngemeinscha ";"39606  ";Meseberg                  
       3;"Zettlersweg 6a            ";"39606  ";Iden                      



нужен ваш код чтобы конкретней объяснить.


Автор: viktorrrrrr 17.9.2008, 11:43
Код

public void baseImp() {
        
           try {
               
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        conn = DriverManager.getConnection(url, user, pass);
        System.out.println("Verbunden+++");
        
        FileInputStream fis = new FileInputStream("in/kund_dat.asc"); 
        PreparedStatement stmt = conn.prepareStatement
        ("insert into kunde_dat (NUMMER,STRASSE,PLZ,ORT) values (?,?,?,?) "); 
        BufferedReader in = new BufferedReader(new InputStreamReader(fis,"Windows-1252"));
        
        
        while ((str = in.readLine()) != null) 
          {
            String[] arr = str.split(";"); 
          
        
         
        stmt.setString(1, arr[0]); 
            stmt.setString(2, arr[1]);
            stmt.setString(3, arr[2]); 
            stmt.setString(4, arr[3]);
         
         int count = stmt.executeUpdate(); 
            System.out.println(count); 
          }
            }
           catch (Exception e) {
                System.err.println("Kann nicht verbinden!");
                }
                                    
                }
    
    

в базу все принимается , но при  сравнении он не находит данные так как они с пробелами
а нет ковычек потому что фаил .asc   функция String.trim() не подходит она убирает в начле и в конце

Автор: cube 17.9.2008, 12:34
ох Виктор)))
Я же кажется тебе уже писал, используй trim()
Но это еще не все))
Не только проблема в пробелах смотрим:
(NUMMER,STRASSE,PLZ,ORT) 
Код

       2;Dorfstr. 1 Wohngemeinscha ;39606  ;Meseberg                  
       3;Zettlersweg 6a            ;39606  ;Iden                      
       4;Priemern Nr.2             ;39606  ;Bretsch                   
       5;Krumker Strasse 7         ;39606  ;Osterburg                 
       6;Bahnhofstr. 6a            ;39624  ;Meßdorf                   

из этого кусочка наверное следует что первое поле это NUMMER и оно будет всегда числовое
второе поле это STRASSE оно у вас текстовое, поле PLZ у вас тоже числовое, а ORT - текстовое

Теперь посмотрите как была создана ваша таблица kunde_dat, такие ли свойства у выше перечисленных полей? Если да то меняем это

Код

            stmt.setString(1, arr[0]); 
            stmt.setString(2, arr[1]);
            stmt.setString(3, arr[2]); 
            stmt.setString(4, arr[3]);


на это

Код

try{
            stmt.setInt(1, Integer.parseInt(arr[0].trim())); 
            stmt.setString(2, arr[1].trim());
            stmt.setInt(3, Integer.parseInt(arr[2].trim())); 
            stmt.setString(4, arr[3].trim());
}catch (NumberFormatException nfe) {nfe.printStackTrace();}


эта строка
Код

            stmt.setInt(1, Integer.parseInt(arr[0].trim())); 

обозначает удалить пробелы с концов строк [0] элемента массива, разобрать его как число и вставить в запрос как числовое значение

(проверь синтаксис, я мог ошибиться в коде и запускай)))
з.ы. читай побольше документации по jdbc, она есть как на русском, так на английском и даже на немецком языках, удачи! ;)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)