我有一个jtextpane。 textbne的值作为Blob存储在数据库中。当我从数据库中检索值时,我注意到所有数据都设置在一行但我保存在不同的行中。
插入代码: 尝试{ 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();
}
Retrive Code:
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 :(得分:3)
我最好的猜测是,数据库的编码会混淆从JTextArea
检索到的文本中的换行符。有关在两个JTextArea
实例之间复制文本,请参阅以下SSCCE。您可以在第一个区域输入多行文字,按下按钮,多行文字出现在第二个区域,包括换行符
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 );
}
} );
}
}
Swing text component tutorial明确指定
请注意,文本系统在内部使用'\ n'字符来表示换行符;有关详细信息,请参阅DefaultEditorKit的API文档
所以我建议你仔细查看(例如调试器)你从文本区域检索的String
以及你在数据库中存储的内容,并将其与String
你进行比较之后从数据库中检索。很可能那两个不相等