代码之家  ›  专栏  ›  技术社区  ›  Behrooz

system.data.sqlcommand中的unicode发生了什么

  •  3
  • Behrooz  · 技术社区  · 16 年前

    我有一个sqlcommand:

    “更新客户集name=@name 其中code=@code“

    这个代码:

    cmd.Parameters[0].Value = "بهروز";//(some Unicode characters)  
    cmd.Parameters[1].Value = 1;  
    cmd.ExecuteNonQuery();  
    

    或此代码:

            UpdateCommand.CommandText = "UPDATE [Customers] SET [Name] = @p1 WHERE (([Code] = @p2) AND ((@p3 = 1 AND [Name] IS NULL) OR ([Name] = @p4)))";
            UpdateCommand.Parameters.Add("@p1", System.Data.SqlDbType.SmallInt, 0, "Name");
            UpdateCommand.Parameters.Add("@p2", System.Data.SqlDbType.NVarChar, 0, "Code");
            UpdateCommand.Parameters.Add("@p3", System.Data.SqlDbType.NText, 0, "Name");
            UpdateCommand.Parameters.Add("@p4", System.Data.SqlDbType.SmallInt, 0, "Name");
    

    当我选择客户表时,我有很多“?”S.
    为什么使用sqldataadapter时sqlcommand工作正常?
    如何将Unicode数据转换为ANSI?

    编辑:
    换句话说:
    SqlDataAdapter使用什么代码?
    有人有.NET框架那部分的源代码吗?

    3 回复  |  直到 16 年前
        1
  •  5
  •   Nasser Hadjloo    16 年前

    亲爱的behrooz只需使用一个简单的sql命令

    n′

    无论何时使用n,强制sql使用unicode,都不会有任何问题。

        2
  •  2
  •   Gabriel McAdams    16 年前

    .NET中的所有字符串都是Unicode。在.NET中没有ANSI字符串。如果要将字符串编码为字节数组,请使用 Encoding.GetBytes .

    您的问题可能是它向存储过程发送数据的方式。我认为您需要将sql数据类型添加到参数中。请尝试以下代码:

    cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 30);
    

    SqlParameterCollection.Add 方法获取更多信息。

        3
  •  0
  •   Jeremy McGee    16 年前

    猜猜看:试着设置 SqlDbType 明确的参数:

    cmd.Parameters[0].Value = "بهروز";//(some Unicode characters)  
    cmd.Parameters[0].SqlDbType = SqlDbType.NVarChar;
    cmd.Parameters[1].Value = 1;  
    cmd.ExecuteNonQuery();  
    
    推荐文章