我正在尝试将√
和✓
符号存储在nvarchar(50)
列中。
这是代码示例
vtick.Text = "√";
vvtick.Text = "✓";
INSERT INTO qstnscon (vt,pt) VALUES ('"+vtick.Text+"','"+vvtick.Text+"')";
但它存储简单字符(例如v
)。是什么导致了这个问题?
答案 0 :(得分:15)
首先,这些列vt
和pt
必须是 NVARCHAR
数据类型 - 否则您无法存储这些特殊符号。
其次:在存储Unicode字符时,必须为它们添加N'...'
:
INSERT INTO qstnscon (vt, pt) VALUES (N'"+vtick.Text+"', N'"+vvtick.Text+"')";
^ ^
-- these are needed! ----------------+------------------+
如果您要从SQL Server Management Studio插入数据,请使用此技术(前缀为N
)。
从您的C#代码:使用参数化查询!
INSERT INTO qstnscon (vt, pt) VALUES (@vt, @pt);
然后将其定义为来自C#
的SqlParameter
类型的SqlDbType.NVarChar
string insertStmt = "INSERT INTO qstnscon (vt, pt) VALUES (@vt, @pt);";
using(SqlCommand cmd = new SqlCommand(insertStmt, yourDbConnection))
{
cmd.Parameters.Add("@vt", SqlDbType.NVarChar, 50).Value = ".....";
cmd.Parameters.Add("@pt", SqlDbType.NVarChar, 50).Value = ".....";
yourDbConnection.Open();
cmd.ExecuteNonQuery();
yourDbConnection.Close();
}