Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MS SQL中未保存特殊字符_C#_Sql Server 2008_Unicode_Encoding_Character Encoding - Fatal编程技术网

C# MS SQL中未保存特殊字符

C# MS SQL中未保存特殊字符,c#,sql-server-2008,unicode,encoding,character-encoding,C#,Sql Server 2008,Unicode,Encoding,Character Encoding,我对这个捷克字符有一个小问题。当从我的C#代码触发更新时,这个小错误不会保存到我的MS SQL表中 如果我在sqlmanagementstudio中手动添加它,它会按应该的方式保存,并且它也会正常显示在网站上 但是从C#保存它的过程只以保存在表中的字符u结束,而不是ů 我的数据库字段类型为nvarchar和ntext,数据库的排序规则为French\u CI\u AS。我正在使用MSSQL 2008 代码: 有什么想法吗?直接的问题是您没有使用unicode文本;这必须是: UPDATE Tab

我对这个捷克字符有一个小问题。当从我的C#代码触发更新时,这个小错误不会保存到我的MS SQL表中

如果我在sqlmanagementstudio中手动添加它,它会按应该的方式保存,并且它也会正常显示在网站上

但是从C#保存它的过程只以保存在表中的字符
u
结束,而不是
ů

我的数据库字段类型为
nvarchar
ntext
,数据库的排序规则为
French\u CI\u AS
。我正在使用MSSQL 2008

代码:


有什么想法吗?

直接的问题是您没有使用unicode文本;这必须是:

UPDATE Table SET id = 1, title = N'Title with ů' WHERE id = 1
N
很重要

更大的问题是您应该使用参数:

int id = 1;
string title = "Title with ů";
// ^^ probably coming from C# parameters

using(var sqlcomLoggedIn = new SqlCommand(
    "UPDATE Table SET title = @title WHERE id = @id", sqlCon, sqlTrans))
{
    sqlcomLoggedIn.Parameters.AddWithValue("id", id);
    sqlcomLoggedIn.Parameters.AddWithValue("title", title);
    int status = sqlcomLoggedIn.ExecuteNonQuery();
}

然后问题就消失了,您可以使用缓存的查询计划,并且可以避免sql注入

使用!完美的工作起来很有魅力:)@Martin(悄悄地希望你使用了第二个版本,而不是第一个版本)我实际上使用了参数:)
int id = 1;
string title = "Title with ů";
// ^^ probably coming from C# parameters

using(var sqlcomLoggedIn = new SqlCommand(
    "UPDATE Table SET title = @title WHERE id = @id", sqlCon, sqlTrans))
{
    sqlcomLoggedIn.Parameters.AddWithValue("id", id);
    sqlcomLoggedIn.Parameters.AddWithValue("title", title);
    int status = sqlcomLoggedIn.ExecuteNonQuery();
}