将日语字符从TextBox存储到SQL表中

问题描述 投票:0回答:2

将日语字符从表格TextBox存储到SQL表显示为问号。我正在尝试制作一个包含日语文本和英语翻译的表格,以使我学习日语时的生活变得更加轻松。正在寻找解决方案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();

}


c# sql sql-server ado.net
2个回答
1
投票

似乎您已经错过了into语句中的Insert关键字,作为第二个注意事项,您需要知道避免了这种字符串连接,它很容易受到SQL Injection攻击。您应始终使用parameterized queries来避免SQL Injection

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;

1
投票

您的查询存在语法问题,其次,您应该使用参数化查询来防止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;
© www.soinside.com 2019 - 2024. All rights reserved.