2012-03-12 7 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'ブロックに' close'ステートメントを入れる必要があります。 – 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'です –

関連する問題