单声道SqlParameter中的西里尔值插入错误

时间:2016-06-08 08:15:48

标签: sql-server ubuntu mono cyrillic

如果我在@Name字符串中使用带有西里尔字符的值,则下一个代码段会抛出异常。如果我使用拉丁字符,它可以正常工作。在.Net 4.0的Windows主机上工作正常。但是在Ubuntu 14.04上使用last mono它有错误。 SQL Server MS SQL 2014。

StringBuilder sb = new StringBuilder();
            sb.AppendLine("INSERT INTO [MyTable]([Name],[ID]) ");
            sb.AppendLine("VALUES(");
            sb.Append("@Name, ");
            sb.Append("@ID)");
            SqlConnection sqlConnection =
                new SqlConnection(connStr);
            try
            {
                sqlConnection.Open();
                SqlCommand sqlCommand = new SqlCommand(sb.ToString(), sqlConnection);

                SqlParameter sqlParameter = null;

                var msg = "Имя";
                sqlParameter = new SqlParameter("@Name", SqlDbType.VarChar, 0, "Name");
                sqlParameter.Value = msg;
                sqlCommand.Parameters.Add(sqlParameter);

                sqlParameter = new SqlParameter("@ID", SqlDbType.BigInt, 0, "ID");
                sqlParameter.Value = 39;
                sqlCommand.Parameters.Add(sqlParameter);

                sqlCommand.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                var a = 0;
            }
            finally
            {
                sqlConnection.Close();
            }

1 个答案:

答案 0 :(得分:0)

尝试

sqlParameter = new SqlParameter("@Name", SqlDbType.NVarChar, 0, "Name");

代替

sqlParameter = new SqlParameter("@Name", SqlDbType.VarChar, 0, "Name");