c# - 如何使用 SqlCommand c# 将西里尔文和其他特殊字符插入 SQL Server?

标签 c# sql-server

我创建了一个简单的应用程序,可以帮助翻译用 C# 编写的网站和应用程序。但是我不知道如何将特殊字符插入SQL Server,我之前在PHP 中使用过MySql。现在,当我在 C# 中使用以下命令将特殊字符插入数据库时​​,我只看到 ?????? 字符:

using (SqlCommand sqlCmd = new SqlCommand())
{
    sqlCmd.Connection = connection;
    sqlCmd.CommandType = CommandType.Text;

    sqlCmd.CommandText = "INSERT INTO dbo.Translations(TranslationKey,TranslationValue,FromLanguageKey,ToLanguageKey) VALUES (@TranslationKey, @TranslationValue, @FromLanguageKey, @ToLanguageKey)";

    sqlCmd.Parameters.AddWithValue("@TranslationKey", item.TranslationKey);
    sqlCmd.Parameters.AddWithValue("@TranslationValue", item.TranslationValue);
    sqlCmd.Parameters.AddWithValue("@FromLanguageKey", item.FromLanguageKey);
    sqlCmd.Parameters.AddWithValue("@ToLanguageKey", item.ToLanguageKey);

    try
    {
        connection.Open();
        sqlCmd.ExecuteNonQuery();
        connection.Close();
    }
    catch (Exception ex)
    {
        connection.Close();
    }
}

一些教程写了use N语句,但是我如何将它与Parameters.AddWithValue一起使用?

最佳答案

首先,最重要的一点。这:

catch (Exception ex)
{
    connection.Close();
}

非常非常邪恶。您丢弃了有关可能发生的错误的所有信息。 如果您发现错误,请记录和/或显示它们。不要把它们扔掉。这样的代码将使调试成为一场噩梦。您可能想写的是:

try
{
    connection.Open();
    sqlCmd.ExecuteNonQuery();
}
finally
{
    connection.Close();
}

更好:使用 using 关键字。


现在讨论一个小问题,即本地化。您的代码是正确的(除了上面提到的一点),您的数据类型可能不正确。

由于您没有提供 [mcve],人们只能猜测,但最可能的原因是您在应该使用时使用了 varchartextnvarcharnvarchar(MAX)

关于c# - 如何使用 SqlCommand c# 将西里尔文和其他特殊字符插入 SQL Server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38681747/

相关文章:

c# - 自动实现属性的支持字段的可访问性是什么?

c# - 将存储过程中的 Select Query 的结果返回到列表

sql-server - SQL Server 2005 和 2008 的区别

c# - 使用 C# 的 MS Outlook 集成

c# - RESTful 服务中 webHttpBinding 的绑定(bind)和配置?

sql - View 包含不精确或不确定的转换?

php - 从两个表中获取最近的日期

c# - Entity Framework - 保存引用新记录的外键

c# - 使用 XAML/WPF 的路径/矢量的(自动)动画

c# - 使用 Linq to Entities 在一次操作中获取 COUNT 和 SKIP TAKE