gpt4 book ai didi

c# - 将 bool 类型传递给 C# 和 MS SQL Server 中的位参数类型

转载 作者:太空狗 更新时间:2023-10-30 00:18:44 25 4
gpt4 key购买 nike

我有一个 C# 方法接受 clientId (int) 和 hasPaid (boolean),表示客户是否已付款。 MS SQL Server 存储过程需要 BIT 值(1 或 0)作为 @HasPaid 参数,但该方法需要 boolean 类型(true/false)作为 hasPaid。 ADO.NET 代码会负责将 boolean 转换为 SQL Server 的 bit 类型,还是我需要转换 hasPaid 的值变成 1 或 0

public void UpdateClient(int clientId, bool hasPaid)
{
using (SqlConnection conn = new SqlConnection(this.myConnectionString))
{
using (SqlCommand sqlCommand = new SqlCommand("uspUpdatePaymentStatus", conn))
{
sqlCommand.CommandType = CommandType.StoredProcedure;
sqlCommand.Parameters.AddWithValue("@ClientID", clientId);
sqlCommand.Parameters.AddWithValue("@HasPaid", hasPaid);
sqlCommand.Connection.Open();
var rowsAffected = sqlCommand.ExecuteNonQuery();
}
}
}

最佳答案

当使用 SQL 参数时,我发现 AddWithValue 的类型自动检测功能太不可靠了。我发现只调用 Add 显式设置类型会更好,Add 还会返回它从函数调用中创建的新参数,因此您只需调用 .Value 之后。

public void UpdateClient(int clientId, bool hasPaid)
{
using (SqlConnection conn = new SqlConnection(this.myConnectionString))
{
using (SqlCommand sqlCommand = new SqlCommand("uspUpdatePaymentStatus", conn))
{
sqlCommand.CommandType = CommandType.StoredProcedure;
sqlCommand.Parameters.Add("@ClientID", SqlDbType.Int).Value = clientId;
sqlCommand.Parameters.Add("@HasPaid", SqlDbType.Bit).Value = hasPaid;
sqlCommand.Connection.Open();
var rowsAffected = sqlCommand.ExecuteNonQuery();
}
}
}

在使用存储过程时使用正确的类型非常重要,它需要特定的类型,我只是养成了总是这样做的习惯。

关于c# - 将 bool 类型传递给 C# 和 MS SQL Server 中的位参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31055135/

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