Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 21.06.2023
Сообщений: 20
1

Как передать русские символы из Java в базу данных Sql Server

10.04.2024, 19:35. Показов 357. Ответов 0

Author24 — интернет-сервис помощи студентам
Что имеется:
Index.jsp - на неё выводятся все данные из БД.
Create.jsp - в ней пользователь вводит данные для полей name и price в БД.
класс Product с полями name, price.
В другом классе описан метод insert, который добавляет данные в бд.

Все коды расположу ниже.

Проблема:
когда пользователь в create.jsp вводит значение для name, например, "диван", оно сохраняется как и надо в классе Product в переменную name, но не в виде русского слова, а в виде кода: "&# 1090;&# 1091;&# 1094; ..". После чего метод Insert заносит этот код в БД и он там и хранится в виде кода, что неправильно.

Мои попытки исправить:
в Index.jsp я добавила <%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>, чтобы этот код и весь русский текст,полученный из БД, страница воспринимала (а не переписывала этот же код или писала знаки вопросов). Однако, логично, в БД всё еще код, а не русский язык
В create.jsp если добавить строку "<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>", то оно начнет выводить не код символов, а всякие крокозябры типа туу.
Также пыталась изменить строку подключения добавив "useUnicode=true;characterEncoding=utf8", но это нужно для MySQL, а не для SQL Server, для него вроде как ничего не нужно из доп. параметров таких, в любом случае это не помогло.
Проверила также Tomcat он тоже настроен на работу UTF-8.

Русский текст заносится в базу данных в виде кода, а не символов, как это можно исправить?

Буду благодарна, если кто-нибудь сможет всё-таки помочь.

Index.jsp:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Products</title>
</head>
<body>
<h2>Products List</h2>
<p><a href='<c:url value="/create" />'>Create new</a></p>
<table>
<tr><th>Name</th><th>Price</th><th></th></tr>
<c:forEach var="product" items="${products}">
 <tr><td>${product.name}</td>
    <td>${product.price}</td>
    <td>
    <a href='<c:url value="/edit?id=${product.id}" />'>Edit</a> |
    <form method="post" action='<c:url value="/delete" />' style="display:inline;">
        <input type="hidden" name="id" value="${product.id}">
        <input type="submit" value="Delete">
    </form>
 </td></tr>
</c:forEach>
</table>
</body>
</html>
Create.jsp:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Create product</title>
</head>
<body>
<h3>New product</h3>
<form method="post">
<label>Name</label><br>
<input name="name"/><br><br>
<label>Price</label><br>
<input name="price" type="number" min="100" /><br><br>
<input type="submit" value="Save" />
</form>
</body>
</html>
класс Product:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import java.io.Serializable;
 
public class Product implements Serializable {
 
    private static final long serialVersionUID = 1L;
 
    private int id;
    private String name;
    private int price;
     
    public Product(){ }
    public Product(String name, int price){
         
        this.name = name;
        this.price = price;
    }
    public Product(int id, String name, int price){
         
        this.id = id;
        this.name = name;
        this.price = price;
    }
     
    public int getId() {
        return id;
    }
     
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getPrice() {
        return price;
    }
 
    public void setPrice(int price) {
        this.price = price;
    }
}
Метод insert:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static int insert(Product product) {
        if (connection !=null){
                String sql = "INSERT INTO products (name, price) Values (?,?);";
                try(PreparedStatement preparedStatement = connection.prepareStatement(sql)){
                    preparedStatement.setString(1, product.getName());
                    preparedStatement.setInt(2, product.getPrice());
                      
                    return  preparedStatement.executeUpdate();
                }            
                catch(Exception ex){
                    System.out.println(ex);
                }
        }
        return 0;
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.04.2024, 19:35
Ответы с готовыми решениями:

Существует ли возможность перенести базу данных с sql server 2019 на sql server 2016
Здравствуйте Гуру SQL подскажите пожалуйста существует ли возможность перенести базу данных с sql server 2019 на sql server 2016 варианты...

ASP и SQL Server 2000 - русские символы на зарубежном хостинге
Здравствуйте! У меня следующая проблема: я заказл asp-хостинг на американском сервере компании ... закачал туда базу данных и так...

Не записывает русские символы в базу данных
Доброго времени суток. Я новичок, и многого не понимаю. У меня есть код регистрации: if($_SERVER == &quot;POST&quot;) { ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2024, 19:35
Помогаю со студенческими работами здесь

Как присоединить базу данных к MS SQL SERVER?
При присоединении файла базы данных к MS SQL SERVER 2012 выдает ошибку, что типа в другой версии был создан. Что сделать?

Как создать новую базу данных SQL Server?
В книге Троелсена написано щёлкнуть правой кнопкой мыши по &quot;подключение к данным&quot; и выбрать &quot;создать новую базу данных SQL...

Как открыть базу данных в sql server 2014
Кто может помочь разобраться как открыть базу данных? База данных создана на одном компьютере, а на другом не получается ее открыть. В чем...

Как создать базу данных SQL Server Compact?
Установила SQL Server 2005.(((( Хотела в Management Studio создать базу данных SQL Server Compact. Но в поле &quot;Тип сервера&quot; нет...

Как открыть базу данных в sql server 2008?
Создал базу данных в Visual Studio 2013, она состоит 2-ух файлов с форматами .mdf и .ldf. Как ее открыть в sql server-e?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Что нового в C# 14
UnmanagedCoder 10.03.2025
Предстоящая версия C# 14 обещает принести изменения, которые сделают разработку еще более приятной и эффективной. Что стоит отметить, так это влияние сообщества разработчиков на формирование новых. . .
Формулы поворота
Igor3D 10.03.2025
Добрый день Тема Эти формулы приводятся во множестве тьюториалов, часто под видом "матрица вращения на плоскости". x' = x * cos(a) - y * sin(a) y' = y * cos(a) + x * sin(a) Как бы Вы их. . .
Что нового в .NET 10
UnmanagedCoder 10.03.2025
. NET 10 выходит как релиз с длительной поддержкой (LTS), включающей три года обновлений. В этом обновлении Microsoft сфокусировались на нескольких направлениях: производительность, оптимизация. . .
Отложенное высвобождение, RCU и Hazard Pointer в C++26
NullReferenced 09.03.2025
Многопоточное программирование стало важной частью современной разработки. Когда несколько потоков одновременно работают с общими данными, возникает целый ряд проблем, связанных с синхронизацией и. . .
Неблокирующийся стек на C++26
NullReferenced 09.03.2025
Традиционные способы синхронизации в многопоточном программировании — мьютексы, семафоры, условные переменные — часто превращаются в узкое место в плане производительности. При этом неблокирующиеся. . .
Обработка строк в C++26: Новые возможности string и string_view
NullReferenced 09.03.2025
Новый стандарт C++26 предлагает много улучшений для работы с привычными string и относительно новыми string_view. string_view - это невладеющая ссылка на последовательность символов, появившаяся в. . .
Мой первый аддон для Blender 3D, с помощью нейронки (не зная даже азов пайтона, но это не значит что так и с остальным).
Hrethgir 09.03.2025
Потратил весь день. Пол-дня мне хватило, чтобы понять что с версией с 14B мне не одолеть написание функционального кода, на языке с которым я вообще никак не знаком - пайтон. Версия 22B от другого. . .
Einstein@Home сегодня исполняется двадцать лет!
Programma_Boinc 09.03.2025
Einstein@Home сегодня исполняется двадцать лет! Отправлено 19 февраля 2025 года в 17:20:21 UTC Я хочу поздравить всех наших волонтеров, разработчиков и ученых из Einstein@Home. Мы официально. . .
Заполнители и расширенный набор символов в C++26
NullReferenced 09.03.2025
C++26 представляет два важных обновления: заполнители и расширенный набор символов. Заполнители (placeholders) решают давнюю проблему лаконичности кода в шаблонных выражениях и лямбда-функциях. Они. . .
Контракты в C++26
NullReferenced 09.03.2025
Контракты – это механизм, позволяющий указывать предусловия, постусловия и инварианты для функций в коде. Эта функциональность должна была стать частью C++20, но была исключена на встрече комитета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru