如何存储√和✓(刻度线)符号

时间:2013-12-11 13:06:23

标签: c# sql sql-server winforms

我正在尝试将符号存储在nvarchar(50)列中。

这是代码示例

vtick.Text = "√";
vvtick.Text = "✓";

INSERT INTO qstnscon (vt,pt) VALUES ('"+vtick.Text+"','"+vvtick.Text+"')";

但它存储简单字符(例如v)。是什么导致了这个问题?

1 个答案:

答案 0 :(得分:15)

首先,这些列vtpt 必须是 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();
}