从Mysql获取数据时出现问题

时间:2016-09-30 18:01:58

标签: java mysql netbeans

我在使用Mysql数据库前面的java程序获取以前记录的数据时遇到问题。我检查了mysql和Netbeans,编码是utf-8但我仍然遇到这种问题。 任何提示??

我在Mac上使用netbeans 8.2

我的应用程序显示如下数据:

My application

MySQL显示数据没有问题:

This is when I read from database

3 个答案:

答案 0 :(得分:0)

这个问题不够准确,因此你可能会尝试一些观点。

在插入数据库之后,在插入任何数据之前,在java前端应用程序中添加这些语句:

SET character_set_connection="utf8"
SET character_set_client="utf8"
SET character_set_database="utf8"
SET character_set_results="utf8"
SET character_set_server="utf8"
SET character_set_system="utf8"

可能你根本不需要它们;随意尝试哪些人可以做到这一点。

您也可以通过发出命令登录MySQL控制台并查看实际设置:

mysql> show variables like '%character_set%';

答案 1 :(得分:0)

这是生成JTextArea和所有数据的代码

 private void popolaPianificazione(){

    String tipo="Pianificazione";
    String sql = "SELECT * FROM DomandePianificazione";
    ResultSet res = null;
    try {
        res = MysqlStuff.richiediDatiSQL(sql);
        if(res != null){

            res.last();
            if(res.getRow() != 0){
                res.beforeFirst();

                while(res.next()){
                    final String contatore = res.getString("id");
                    int conta  = Integer.parseInt(contatore);
                    JPanel temp = new javax.swing.JPanel(new MigLayout("fill","grow"));
                    temp.setBorder(javax.swing.BorderFactory.createTitledBorder("DOMANDA "+"["+conta+"]"));
                    String domande = res.getString("Domanda");
                    domande.replace("è", "p");
                    javax.swing.border.Border border = BorderFactory.createEtchedBorder();
                     JTextArea domanda = new javax.swing.JTextArea(domande,2,2);
                    domanda.setBorder(border);
                    domanda.setBackground(colore);
                    domanda.setSize(400, 100);
                    domanda.setFont(font);
                    domanda.setMinimumSize(new Dimension(400,100));
                    domanda.setLineWrap(true);
                    domanda.setWrapStyleWord(true);
                    domanda.setOpaque(false);
                    domanda.setEditable(false);
                    JCheckBox rispostaC = new javax.swing.JCheckBox("Si/No");
                    JCheckBox rispostaCom = new javax.swing.JCheckBox("A completamento");
                    String rispostaCheck = res.getString("rispostaCheck");
                    String rispostaCompleta = res.getString("rispostaCompleta");
                    if (!"no".equals(rispostaCheck)){

                        rispostaC.setSelected(true);
                    }
                    else{

                    rispostaCom.setSelected(true);
                    }
                    JButton edit = new javax.swing.JButton("Modifica la domanda");

                    ButtonGroup buttonGroup1 = new javax.swing.ButtonGroup();
                    buttonGroup1.add(rispostaC);
                    buttonGroup1.add(rispostaCom);
                    rispostaC.setEnabled(false);
                    rispostaC.setRolloverEnabled(false);
                    rispostaCom.setEnabled(false);
                    rispostaCom.setRolloverEnabled(false);

                    temp.add(edit,"wrap");

                    edit.addActionListener(new ActionListener(){               
                        @Override
                        public void actionPerformed(ActionEvent e) {

                           if ("Salva le modifiche".equals(edit.getLabel())){
                             System.out.println("Sto salvando...");
                             String pannello = "DomandePianificazione"; 

                               try {
                                   SalvaDomanda(tipo,contatore,domanda,rispostaC,rispostaCom,pannello);

                                   PanelPianificazione.revalidate();
                                   PanelPianificazione.repaint();
                               } catch (SQLException ex) {
                                   Logger.getLogger(ManageQuestionario.class.getName()).log(Level.SEVERE, null, ex);
                               }

SKIP

这是将数据发送到mysql的代码:

         public  static void inviaDatiSQL(String sql,String stat) throws SQLException, ClassNotFoundException{
             UP = connetti();
     System.out.println("INVIO dati a DB: \n"+ sql);
     Statement stmt = null;

             PreparedStatement test = UP.prepareStatement(sql);
             test.setString(1, stat);

     test.executeUpdate();
     System.out.println("Finito !");
 }

答案 2 :(得分:0)

好的,我解决了。 基本上这是关于Mysql中的列数据的一个问题,它是BLOB ...我已经尝试在LONGTEXT中进行更改,但即使所有数据库都是UTF-8,如果我只改变了内容类型,那还不够! 我必须更改两种类型的排序规则,数据库和列表。

感谢您的支持!

亚历