Задать вопрос
@Kamikadze1024

Как сохранить в базу поле с кириллицей в кодировке cp866?

Коллеги, у меня есть база, поля в которой в кодировке cp866. Не получается сохранить данные в кодировке так, чтобы они записались в базу корректно. Как мне это сделать?

Class.forName("org.sqlite.JDBC");
            c = DriverManager.getConnection("jdbc:sqlite:configDb.db");

            c.setAutoCommit(true);
            System.out.println("Opened database successfully");

            Statement stmt    = null;

            for(int i = 1; i < table.size(); i++){
                String query = "";
                if(table.get(i).get(2).equals("12")){
                    /*pstmt.setString(1,
                            new String(table.get(i).get(1).getBytes(Charset.forName("cp866"))));*/
                    /*query = "UPDATE CONFIG SET " + table.get(i).get(0) + "='"
                            + new String(table.get(i).get(1).getBytes(Charset.forName("cp866"))) + "' WHERE ID=1";*/

                    Charset cset = Charset.forName("CP866");
                    ByteBuffer buf = cset.encode(table.get(i).get(1));
                    byte[] charsCp866 = buf.array();
                    String value = new String(charsCp866);

                    query = "UPDATE CONFIG SET " + table.get(i).get(0) + "='"
                            + value + "' WHERE ID=1";
                } else if(table.get(i).get(2).equals("4")) {
                    //pstmt.setInt(1, Integer.valueOf(table.get(i).get(1)));
                    /*query = "UPDATE CONFIG SET " + table.get(i).get(0) + "="
                            + new String(table.get(i).get(1).getBytes(Charset.forName("cp866"))) + " WHERE ID=1";*/

                    Charset cset = Charset.forName("CP866");
                    ByteBuffer buf = cset.encode(table.get(i).get(1));
                    byte[] charsCp866 = buf.array();
                    String value = new String(charsCp866);

                    query = "UPDATE CONFIG SET " + table.get(i).get(0) + "="
                            + value + " WHERE ID=1";
                } else {
                    query = "";
                }

                PreparedStatement pstmt = c.prepareStatement(query);
                if(query.equals("")) {
                    System.out.println("Error in creating query!");
                    continue;
                }

                pstmt.executeUpdate();
                pstmt.close();
            }

            c.close();
        } catch ( Exception e ) {
            System.err.println( e.getClass().getName() + ": " + e.getMessage() );
        }
        System.out.println("Operation done successfully");
    }
  • Вопрос задан
  • 231 просмотр
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы