单声道的 SqlParameter 中的西里尔值插入错误
Cyrillic value insert error in SqlParameter on mono
如果我在带有西里尔字符的@Name 字符串中使用 as 值,下一个代码片段将引发异常。如果我使用拉丁字符,它工作正常。在 Windows 带有 .Net 4.0 的主机上工作正常。但是在 Ubuntu 14.04 上最后一个单声道它有错误。 SQL 服务器 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();
}
尝试
sqlParameter = new SqlParameter("@Name", SqlDbType.NVarChar, 0, "Name");
而不是
sqlParameter = new SqlParameter("@Name", SqlDbType.VarChar, 0, "Name");
如果我在带有西里尔字符的@Name 字符串中使用 as 值,下一个代码片段将引发异常。如果我使用拉丁字符,它工作正常。在 Windows 带有 .Net 4.0 的主机上工作正常。但是在 Ubuntu 14.04 上最后一个单声道它有错误。 SQL 服务器 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();
}
尝试
sqlParameter = new SqlParameter("@Name", SqlDbType.NVarChar, 0, "Name");
而不是
sqlParameter = new SqlParameter("@Name", SqlDbType.VarChar, 0, "Name");