gpt4 book ai didi

c# - .NET SqlParameter 类 : will it truncate . 值字符串?

转载 作者:太空宇宙 更新时间:2023-11-03 22:46:53 25 4
gpt4 key购买 nike

使用 .NET 文档中的示例:

private static void AddSqlParameter(SqlCommand command, string paramValue)
{
SqlParameter parameter = new SqlParameter("@Description", SqlDbType.VarChar, 88);
parameter.IsNullable = true;
parameter.Direction = ParameterDirection.Output;
parameter.Value = paramValue;

command.Parameters.Add(parameter);
}

如果相应的存储过程有 DECLARE @Description varchar(100) 并且表本身的列 Description 设置为 VARCHAR(100),当 paramValue 的长度为 100 个字符时会发生什么情况? SqlParameter.Value 在绑定(bind)/执行 SQL Server 存储过程之前是否截断?

最佳答案

因此,无论这是否准确回答了您的问题,以下是我的发现。

SqlParameter 对象包含完整长度的字符串(即使您已指定它的长度为 88 个字符)。这是有道理的,因为如果它没有,而你在事后去改变它,你就会丢失数据。另外,对于 C# 来说,这是不必要的管理开销,所以如果这种截断是自愿进行的,我会感到惊讶。

虽然查看查询计划,但 ParameterCompiledValue 是截断的版本。所以它发生在两者之间(我猜 SqlClient 库何时将 SqlCommand 对象转换为实际的 TSQL 语句以针对数据库运行)。

因此,如果您的应用程序比数据库更受限制,则不会发生任何问题。但它遵守您对 SqlParameter 施加的大小限制,无论数据库可以合理容纳什么。

关于c# - .NET SqlParameter 类 : will it truncate . 值字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49457248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com