строка из базы данных SQL является вопросительные знаки C #

0

im пытается отправить сообщение в пользовательскую строку, которая является ивритским языком из базы данных, код работает нормально, но когда он хранится в данных, все символы являются вопросительными знаками

zx = user photo id its not a hebrew string works perfect .
cap = e.Message.Caption.ToString();
usern = userid in table works perect to.

con.Open();
                using (var cmd = new SqlCommand("update Accs2 set PhotoId = '" + zx + "',
                PhotoCap= '" + cap  + "' where Username like '%" + usern + "%'", con))
                {
                   await cmd.ExecuteNonQueryAsync();
                   await bot.SendTextMessageAsync(cid, "Your Photo And Caption Saved!", parseMode: ParseMode.Html, replyMarkup: exit);

                 }
                con.Close();
  • 1
    Пожалуйста, никогда не генерируйте SQL-запросы путем объединения строк. Вместо этого используйте параметризованные запросы. xkcd.com/327
  • 0
    Использование SqlParameter может решить вашу проблему (если я правильно понял).
Показать ещё 1 комментарий
Теги:
telegram

1 ответ

0

Измените тип данных столбца на NVARCHAR, где он хранится в DB, например:

Старая структура таблицы:

CREATE TABLE (
COL_1 VARCHAR(10)
COL_2 VARCHAR(500),
...
COL_N VARCHAR(10)
);

И вы сохраняете сообщение в столбце "COL_2", а затем меняете его на NVARCHAR следующим образом:

CREATE TABLE (
    COL_1 VARCHAR(10)
    COL_2 NVARCHAR(500),
    ...
    COL_N VARCHAR(10)
    );

Я предполагаю, что сообщение приходит в языке, который текущий набор символов столбца не поддерживает.

EDIT - 1: Обновлено с помощью примера решения

Вот рабочий набор для моей системы, я также изменил набор символов и сортировку таблиц, как показано ниже, тогда он отлично работает.

mysql> create table test_emoji(col1 int, str_with_emoji varchar(200)) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
Query OK, 0 rows affected (0.40 sec)

mysql> insert into test_emoji(col1,str_with_emoji) values (1,'dhhzhzhzzhjzj 我爱你 ');
Query OK, 1 row affected (0.09 sec)

mysql> select * from test_emoji;
+------+---------------------------------------------+
| col1 | str_with_emoji                              |
+------+---------------------------------------------+
|    1 | dhhzhzhzzhjzj 我爱你                       |
+------+---------------------------------------------+
1 row in set (0.00 sec)

EDIT-2: В SQL Server: перед строкой вы должны использовать префикс 'N', как показано ниже вне строки:

insert into test_emoji(col1,str_with_emoji) values (1,N'dhhzhzhzzhjzj 我爱你 ');
  • 0
    да строка пользователя иврит и emujis от iphone / android, когда строка обновления таблицы сохраняется в базе данных в виде вопросительных знаков
  • 0
    А кулмн уже нварчар 250
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню