2012-03-12 5 views
1

테이블이 있습니다. 테이블의 유형은 'text''Column1'입니다.SQL java에서 텍스트 열을 검색하는 방법은 무엇입니까?

어떻게 텍스트를 검색하여 문자열로 저장할 수 있습니까?

다음은 내가 시도한 것입니다. 당신이 BLOB 구조에 사용되는 text 데이터 타입에 대해 이야기하는 경우

public void getConfigurationXML() 
    { 
     try 
     {    
      Class.forName("java.sql.Driver"); 
      Connection conn=(Connection)DriverManager.getConnection(_url,_user,_pwd); 
      Statement st=conn.createStatement(); 

      ArrayList <String[]> result = new ArrayList<String[]>(); 
      String query ="SELECT Column1 FROM table1"; 
      ResultSet rs=st.executeQuery(query); 
      int columnCount = rs.getMetaData().getColumnCount(); 

      while(rs.next()) 
      { 
       String[] row = new String[columnCount]; 
       for (int i=0; i <columnCount ; i++) 
       { 
        row[i] = rs.getString(i + 1); 
       } 
       result.add(row); 
      } 

      rs.close(); 
      st.close(); 
      conn.close(); 

     } 
     catch(Exception e) 
     { 
      Logger lgr = Logger.getLogger(Database.class.getName()); 
      lgr.log(Level.WARNING, e.getMessage(), e); 
     } 
    } 
+1

문제와 관련이 없지만 구조화되고 안전한 방법으로 닫는 것을 확인하려면'finally' 문을'finally' 블록에 넣어야합니다. – nwinkler

+1

어떤 데이터베이스입니까? 운전자는 일반적으로 보입니다. – nwinkler

+0

데이터베이스에서 다른 문자 인코딩을 사용하고있는 것 같습니다. 이것이 "이상한 문자"를 얻는 이유입니다. – Rakesh

답변

0

(그러나이 작동하지 않습니다, 나는 데이터베이스 내에서 대신 데이터를 다시 이상한 문자를받을), 당신이 시도 할 수 있습니다 :

java.sql.Blob ablob = rs.getBlob(i + 1); 
row[i] = new String(ablob.getBytes(1L, (int) ablob.length())); 

이상한 문자의 이유는 데이터베이스가 예상 한 문자 대신 원시 바이트로이 문자를 저장하기 때문입니다.

+0

DBMS가 PostgreSQL이면'text'는 확실히'BLOB'가 아닙니다. –

관련 문제