在 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"));
        

请给我一些建议。

【问题讨论】:

我们需要更多信息。您如何将数据存储在数据库中。你怎么找回它。您是否将存储的值与检索的值进行了比较?你有这样的价值的例子吗?为什么不简单地将Strings(来自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的布局管理器

Java:Swing 中的 HTML/CSS,内联显示不起作用

Java Swing:显示 Jar 中的图像

java swing 事件问题