[英]Storing Japanese characters from TextBox to SQL table
将日文字符从表单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();
}
看来您在Insert
语句中错过了into
关键字,作为第二个注意事项,您需要注意避免这种字符串连接,并且它容易受到 SQL 注入攻击。 您应该始终使用参数化查询来避免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;
您的查询有语法问题,其次您应该使用参数化查询来保护 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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.