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
首先, -这些列vt和pt 必须是 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)
| 归档时间: |
|
| 查看次数: |
2972 次 |
| 最近记录: |