Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Sql и русские буквы

makkarpov

Активный участник
Пользователь
Баллы
88
Ситуация такова: есть плагин, записывающий данные в базу:
Код:
    private Connection getConnection() {
        try {
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            return DriverManager.getConnection("jdbc:mysql://"+dbHost+":"+dbPort+"/"+dbName+"?user="+dbUser+"&password="+dbPass);
        } catch (Exception e) {
            log.warning("Failed to initialize DB connection!");
            log.warning(e.getMessage());
            //e.printStackTrace();
        }
        return null;
    }
 
 
    public boolean putUserField(String name, String field, String value) {
        PreparedStatement st = null;
     
        boolean res = false;
     
        try {
            st = conn.prepareStatement("UPDATE "+dbTable+" SET "+field+"= ? WHERE username = ? AND scope = ?");
            st.setString(1, value); st.setString(2, name); st.setString(3, scope);
         
            if (st.executeUpdate() == 0) {
                st.close();
             
                st = conn.prepareStatement("INSERT INTO "+dbTable+" (username, scope, "+field+") VALUES (?, ?, ?)");
                st.setString(1, name); st.setString(2, scope);
                st.executeUpdate();
            }
         
            st.close();
         
            res = true;
         
        } catch (Exception e) {
            log.warning(e.getMessage());
            e.printStackTrace();
        } finally {
            closeResources(conn, st, null);
        }
     
        return res; 
    }

Но на руссих буквах база тупит. Кодировка базы - utf8_bin. Как исправить?

P.S. Если записать в базу текст через PMA, то в игре все отлично отображается
 
чётотипо Encoding.UTF8 добавь
примерно


Код:
try {
st = conn.prepareStatement("UPDATE "+dbTable+" SET "+field+"= ? WHERE username = ? AND scope = ?");
  st.setString(1, (value,  Encoding.UTF8 )); st.setString(2, (name,  Encoding.UTF8 )); st.setString(3, (scope,  Encoding.UTF8 ));
 
if (st.executeUpdate() == 0) {
st.close();
 
  st = conn.prepareStatement("INSERT INTO "+dbTable+" ((username, Encoding.UTF8), (scope,  Encoding.UTF8), "+field+") VALUES (?, ?, ?)");
  st.setString(1, (name,  Encoding.UTF8)); st.setString(2, (scope,  Encoding.UTF8 ));
st.executeUpdate();
}
 
@Epik_Fail, вот я смотрю твои последние ответы, и уже сомневаюсь, знаешь ли ты русский язык и не обезъяна ли ты часом
 

Поделиться этой страницей

Назад
Верх