Сохранение японских символов из TextBox в таблицу SQL - PullRequest
0 голосов
/ 24 апреля 2020

Хранение японских символов из таблицы TextBox до SQL отображается в виде вопросительных знаков. Я просто пытаюсь составить таблицу с текстом на японском языке и переводом на английский язык 1010 *, чтобы облегчить себе жизнь, изучая японский язык. Поиск решения 2 дня, кажется, ничего не работает.

Я даже не уверен, является ли это хорошей практикой для сохранения текста в таблице данных.

Также столбец, в котором я хочу Для сохраненного японского символа установлено значение nvarchar(50).

private void addWordButton_Click(object sender, EventArgs e)
{

  con.Open();
  System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();

  cmd.CommandType = System.Data.CommandType.Text;
  cmd.CommandText = "INSERT Words (WordJapanese, WordEnglish) VALUES ('" + newJPwordTxt.Text + "', '" + 
  newENwordTxt.Text + "')";
  cmd.Connection = con;

  cmd.ExecuteNonQuery();
  con.Close();

}


Ответы [ 2 ]

2 голосов
/ 24 апреля 2020

Ваш запрос имеет синтаксические проблемы, и, во-вторых, вы должны использовать параметризованные запросы для защиты от SQL Инъекции.

Следующее должно быть хорошо:

cmd.CommandText = "INSERT INTO Words(WordJapanese, WordEnglish) VALUES (@Japanse, @English)";

cmd.Parameters.Add("@Japanse", SqlDbType.NVarChar, 50).Value = newJPwordTxt.Text;
cmd.Parameters.Add("@English", SqlDbType.NVarChar, 50).Value = newENwordTxt.Text;
2 голосов
/ 24 апреля 2020

Кажется, вы пропустили ключевое слово into в своем операторе Insert. В качестве второго примечания вам необходимо знать, что этот тип конкатенации строк исключен, и он открыт для атаки SQL Injection. Вы должны всегда использовать параметризованные запросы , чтобы избежать SQL Инъекция :

cmd.CommandText = "INSERT into Words (WordJapanese, WordEnglish) VALUES (@WordJapanese, @WordEnglish)";

cmd.Parameters.Add("@WordJapanese", SqlDbType.NVarChar, 50).Value = newJPwordTxt.Text;
cmd.Parameters.Add("@WordEnglish", SqlDbType.NVarChar, 50).Value = newENwordTxt.Text;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...