Показать сообщение отдельно

  #328  
Старый 17.11.2008, 21:48
cash$$$
Banned
Регистрация: 06.01.2008
Сообщений: 413
С нами: 9655526

Репутация: 1334
По умолчанию

Цитата:
Сообщение от N19hTW0lF  
Как поменять Кодировку уже таблицы
как сделать поиск по бд
1 Поменять кодировку уже существующей таблицы можно с помощью SQL-запросов, отправляемых из приложения, или с помощью phpMyAdmin.

Вот пример получающего данные от клиента в кодировке CP1251 и сохраняющего их в таблицу с кодировкой UTF-8:

Код:
import java.io.*;
import java.sql.*;
import java.util.Properties;
import javax.servlet.*;
import javax.servlet.http.*;

/*
Для работы этого примера требуется предварительно создать таблицу с помощью следующего SQL-запроса:
CREATE TABLE test (id INT AUTO_INCREMENT PRIMARY KEY, value VARCHAR(255)) CHARACTER SET utf8
*/
public class DBServlet extends HttpServlet {
    
    protected void service(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        //указываем кодировку для HTML-страницы, отправляемой клиенту
        response.setContentType("text/html; charset=windows-1251");
        //указываем кодировку для данных полученых от клиента
        request.setCharacterEncoding("CP1251"); 
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>DBServlet</title></head>");
        out.println("<body>");
        out.println("<form method=\"post\" action=\"dbservlet\">");
        out.println("<input type=\"text\" name=\"t1\">");
        out.println("<input type=\"submit\">");
        out.println("</form>");
        out.println("<hr>");
        try{
           Connection connection=getDBConnection();
           Statement statement=connection.createStatement();
           if(request.getMethod().equals("POST")){
               String t1=(request.getParameter("t1")!=null)?request.getParameter("t1").trim():"";
               if(t1.length()>0){
                   statement.executeUpdate("INSERT INTO test ( value ) VALUES ('"+t1+"')");
               }
           }
           ResultSet result=statement.executeQuery("SELECT id, value FROM test ORDER BY id DESC");
           out.println("<table border=\"1\">");
           out.println("<tr><th>id</th><th>value</th></tr>");
           while(result.next()){
               out.println("<tr>");
               out.println("<td>"+result.getString("id")+"</td>");
               out.println("<td>"+result.getString("value")+"</td>");
               out.println("</tr>");
           }
           out.println("</table>");
           connection.close();
        }catch(Exception e){
            log(e.toString());
        }
        out.println("</body>");
        out.println("</html>");
    }
    
    /*
    Не самый лучший метод для получения соединения с базой данных.
    Для повышения производительности при работе с базами данных  использовать
    пулы соединений.
    */
    protected Connection getDBConnection()throws Exception{
        Class.forName("com.mysql.jdbc.Driver");
        Properties properties=new Properties();
        properties.setProperty("user","логин");
        properties.setProperty("password","пароль");
        /*
          настройки указывающие о необходимости конвертировать данные из Unicode в UTF-8,
          который используется в таблице для хранения данных
        */
        properties.setProperty("useUnicode","true");
        properties.setProperty("characterEncoding","UTF-8");
        return(DriverManager.getConnection("jdbc:mysql://localhost:3306/имяБазы", properties));
    }
}

Последний раз редактировалось cash$$$; 17.11.2008 в 22:01..
 
Ответить с цитированием