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

SD7*_*SD7 5 c# sql sql-server winforms

我试图在列中存储??符号nvarchar(50).

这是代码示例

vtick.Text = "?";
vvtick.Text = "?";

INSERT INTO qstnscon (vt,pt) VALUES ('"+vtick.Text+"','"+vvtick.Text+"')";
Run Code Online (Sandbox Code Playgroud)

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

mar*_*c_s 15

首先, -这些列vtpt 必须是 NVARCHAR数据类型-否则你无法存储这些特殊符号.

其次:在存储Unicode字符时,必须在它们前面加上N'...':

INSERT INTO qstnscon (vt, pt) VALUES (N'"+vtick.Text+"', N'"+vvtick.Text+"')";
                                      ^                  ^
-- these are needed!  ----------------+------------------+
Run Code Online (Sandbox Code Playgroud)

N如果从SQL Server Management Studio插入数据,请使用此技术(前缀为).

从您的C#代码:使用参数化查询!

INSERT INTO qstnscon (vt, pt) VALUES (@vt, @pt);
Run Code Online (Sandbox Code Playgroud)

然后从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();
}
Run Code Online (Sandbox Code Playgroud)