【问题标题】:How to pass correct object value in SqlParameter for datatype bit?如何在 SqlParameter 中为数据类型位传递正确的对象值?
【发布时间】:2014-05-02 13:14:47
【问题描述】:

我只在需要时才尝试传递一个位值(被选中)。

如何正确执行此操作?我的数据集没有变化。 SQL Server 2008。

if (chkExpired.Checked)
    CmdGetDetails.Parameters.Add(new SqlParameter("@isExpired", 1));

【问题讨论】:

  • 您应该包含更多信息。你的数据库平台是什么?您的其余查询在哪里?
  • isExpired 看起来像布尔字段,在 SQL Server 中表示为 bit。你确定你有一个int 字段
  • 我需要转换 1 个 int 值不是吗?

标签: c# sqlparameter


【解决方案1】:

bit 指的是Boolean

所以你可以在参数的值中传递一个布尔值

例如:

CmdGetDetails.Parameters.AddWithValue("isExpired", chkExpired.Checked); 

没有额外的需要使用 if 块。

【讨论】:

  • 这种方式只会返回选中的值,而不是选中或未选中...我真正需要的是传递选择的值
【解决方案2】:
            param.ParameterName = "@isExpired";
            param.Value =chkExpired.Checked; 
            param.DbType = System.Data.DbType.Boolean;
            cmd.Parameters.Add(param);

【讨论】:

  • 这种方式只会返回选中的值,而不是选中或未选中...我真正需要的是传递选择的值
【解决方案3】:

只需使用复选框的值 (chkExpired.Checked):

CmdGetDetails.Parameters.Add(new SqlParameter("@isExpired", chkExpired.Checked));

【讨论】:

    【解决方案4】:

    您需要以任何一种方式添加参数,作为布尔值:

    CmdGetDetails.Parameters.Add(new SqlParameter("@isExpired", chkExpired.Checked));
    

    【讨论】:

    • 这种方式只会返回选中的值,而不是选中或未选中...我真正需要的是传递选择的值
    猜你喜欢
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 2011-07-09
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多