2012-03-31 3 views
1

jtextpane이 있습니다. 데이타베이스에 BLOB로서 포함되는 textpane의 값 데이터베이스에서 가치를 얻으 려 할 때 한 줄에 모든 데이터 세트가 있음을 알았지 만 다른 줄에 저장합니다.자바 스윙의 한 줄에 블롭 데이터가 표시됩니다.

삽입 코드 : try { conn = db.Database();

 stat3 = conn 
       .prepareStatement("Update Knowledgebase SET Plan=? where TabID=? AND Context=?"); 
     stat3.setString(1, jTextPane1.getText()); 
     stat3.setInt(2, 1); 
     stat3.setObject(3, recv); 

     stat3.executeUpdate(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

을 취득합니다 코드 :

   conn = db.Database(); 

     stat3 = conn 
       .prepareStatement("Select Plan from Knowledgebase where TabID=? And Context=?"); 
     stat3.setInt(1, 1); 
     stat3.setObject(2, recv); 

     rs = stat3.executeQuery(); 
     while (rs.next()) { 
      jTextPane1.setText(rs.getString("Plan")); 
     } 

나에게 어떤 제안을주십시오.

+0

자세한 정보가 필요합니다. DB에 데이터를 어떻게 저장합니까? 당신은 어떻게 그것을 검색 할 수 있습니다. 저장 한 값과 검색 한 값을 비교 했습니까? 그러한 가치의 모범이 있습니까? 왜 단순히'String's ('JTextPane'에서 오는)를 VARCHAR 또는 TEXT로 데이터베이스에 저장하지 않을까요? – Robin

답변

3

데이터베이스의 인코딩이 JTextArea에서 검색된 텍스트의 개행 문자를 엉망으로 만들 것이라고 생각합니다. 두 JTextArea 인스턴스간에 텍스트를 복사하려면 다음을 참조하십시오. SSCCE 당신은 첫 번째 영역 버튼을 눌러에 여러 줄의 텍스트를 입력 할 수 있으며 여러 줄의 텍스트 라인을 포함하는 Swing text component tutorial 명확

주 텍스트 시스템은 그 지정

import javax.swing.BoxLayout; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 
import java.awt.BorderLayout; 
import java.awt.EventQueue; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

public class MultiLineTextDemo { 

    private JFrame testFrame; 
    private JTextArea firstTextArea, secondTextArea; 
    private JButton copyTextButton; 

    public MultiLineTextDemo() { 
    testFrame = new JFrame("Copy text between 2 text area's"); 

    JPanel textPanel = new JPanel(); 
    textPanel.setLayout(new BoxLayout(textPanel, BoxLayout.PAGE_AXIS)); 

    firstTextArea = new JTextArea(10, 50); 
    secondTextArea = new JTextArea(10, 50); 
    secondTextArea.setEditable(false); 
    textPanel.add(new JScrollPane(firstTextArea)); 
    textPanel.add(new JScrollPane(secondTextArea)); 

    testFrame.add(textPanel, BorderLayout.CENTER); 

    copyTextButton = new JButton("Copy text"); 
    copyTextButton.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
     copyText(); 
     } 
    }); 

    testFrame.add(copyTextButton, BorderLayout.SOUTH); 
    } 

    public JFrame getFrame() { 
    return testFrame; 
    } 

    private void copyText(){ 
    secondTextArea.setText(firstTextArea.getText()); 
    } 

    public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
     MultiLineTextDemo multiLineTextDemo = new MultiLineTextDemo(); 
     JFrame frame = multiLineTextDemo.getFrame(); 

     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setVisible(true); 
     } 
    }); 
    } 
} 

나누기, 제 2 영역에 나타납니다 '\ n'문자를 내부적으로 사용하여 개행을 나타냅니다. 자세한 내용은 String 당신이 DB에 저장 한 텍스트 영역에서 검색 및 비교 이것

그래서 난 당신이 (예를 들어, 디버거)을 자세히 살펴 보시기 바랍니다 DefaultEditorKit의

에 대한 API 설명서를 참조하십시오 String과 함께 DB에서 나중에 검색 할 수 있습니다. 가장 가능성이있는 두 사람은 동일하지 않습니다.

+0

+1 할 수 있음 – mKorbel

관련 문제