在 java swing 中显示在一行中的 Blob 数据
Posted
技术标签:
【中文标题】在 java swing 中显示在一行中的 Blob 数据【英文标题】:Blob data showing in one line in java swing 【发布时间】:2012-03-31 07:37:16 【问题描述】:我有一个 jtextpane。在数据库中存储为 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();
检索代码:
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"));
请给我一些建议。
【问题讨论】:
我们需要更多信息。您如何将数据存储在数据库中。你怎么找回它。您是否将存储的值与检索的值进行了比较?你有这样的价值的例子吗?为什么不简单地将String
s(来自JTextPane
)作为VARCHAR 或TEXT 存储在您的数据库中?
【参考方案1】:
我最好的猜测是,您的数据库编码会弄乱从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
,并将其与您之后从D B。很可能这两个不相等
【讨论】:
以上是关于在 java swing 中显示在一行中的 Blob 数据的主要内容,如果未能解决你的问题,请参考以下文章
我用JAVA的swing创建了一个窗口程序,拖了一个jTable控件在窗体上,怎样把数据库中的内容显示在Table上?
java swing控件JTable 怎么单独设置某一行的颜色
java swing JPanel 怎么实现换行Flowlayout的布局管理器