2012-03-12 84 views
1

我有一张桌子。该表具有'text'类型的列'Column1'如何从sql中检索文本列?

如何检索文本并将其存储为字符串?

以下是我所尝试的。 (但它不工作,我得到奇怪的字符后面,而不是数据在数据库中)

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

与您的问题没有关系,但'close'语句应该放在'finally'块中以确保关闭以结构化和安全的方式进行。 – nwinkler 2012-03-12 09:21:26

+1

这是哪个数据库?驱动程序看起来很普通 – nwinkler 2012-03-12 09:23:56

+0

好像你在数据库中使用不同的字符编码。这就是你得到“怪异字符”的原因。 – Rakesh 2012-03-12 09:33:58

回答

0

如果你谈论的是用于BLOB结构text数据类型,你可以试试这个:

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

怪异字符的原因是数据库将其存储为原始字节而不是您期望的字符。

+0

如果DBMS是PostgreSQL,那么'text'绝对不是'BLOB' – 2012-03-12 10:48:53