【问题标题】:How to store √ and ✓ (tick mark) symbols如何存储 √ 和 ✓(勾号)符号
【发布时间】:2013-12-29 11:21:52
【问题描述】:

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

这里是代码示例

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

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

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

【问题讨论】:

  • 您的数据库中的排序规则是什么?

标签: c# sql sql-server winforms


【解决方案1】:

首先 - 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# 的 SqlDbType.NVarChar 类型的 SqlParameter

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();
}

【讨论】:

    猜你喜欢
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多