【问题标题】:C# boolean needs converted to bit for SQL Server so instead of True it needs to be 1C# boolean 需要转换为 SQL Server 的位,因此它需要为 1 而不是 True
【发布时间】:2015-12-13 23:09:14
【问题描述】:

我有一个数据类型为bool 的C# 属性,当它被设置时,它变成TrueFalse

但是我需要它与bit 类型的 SQL Server 表列匹配,以便将其保存为 1 或 0。

SQL Server 列:

StormOut bit

C# 属性

public bool StormOut { get; set; }

C# SQL 语句:

string querystring = "UPDATE tblSignOnOff SET StormOut = " + storm.StormOut + " WHERE id = 1902";

否则目前C#中的SQL语句是

UPDATE tblSignOnOff 
SET StormOut = True 
WHERE id = 1902

这会导致错误:

列名“True”无效。

【问题讨论】:

  • 您可以尝试Parameters.AddWithValue 进行参数化查询,这可能对您有所帮助

标签: c# sql-server type-conversion sqldatatypes


【解决方案1】:

您错过了单引号。改成这样:

string querystring = "UPDATE tblSignOnOff SET StormOut = '" + storm.StormOut + "' WHERE id = 1902";

但重要提示:您应该始终使用parameterized queries,如下所示。这种字符串连接对SQL Injection开放:

string querystring = "UPDATE tblSignOnOff SET StormOut = @StormOut WHERE id = @id";
yourCommand.Parameters.AddWithValue("@id", 1902);
yourCommand.Parameters.AddWithValue("@StormOut", storm.StormOut);

【讨论】:

  • 好吧,我想我将不得不做“Convert.ToInt16 你的布尔值。这将使真/假,0 或 1”
  • 是的:“使用参数化查询”!永远不要通过简单地连接字符串/值来构建 sql 语句。
【解决方案2】:

你应该使用参数并避免字符串连接

string Command = "UPDATE tblSignOnOff SET StormOut @StormOut WHERE id = @id";
using (SqlConnection mConnection = new SqlConnection(ConnectionString))
{
    mConnection.Open();

    using (SqlCommand myCmd = new SqlCommand(Command, mConnection))
    {
        myCmd.Parameters.AddWithValue("@id", 1902); // TODO set this value dynamically
        myCmd.Parameters.AddWithValue("@StormOut", storm.StormOut);

        int RowsAffected = myCmd.ExecuteNonQuery();
    }
}

【讨论】:

【解决方案3】:

根据@S.Akbari 对参数化查询的建议进一步修改了答案;

SqlCommand command = new SqlCommand();
command.CommandText = "UPDATE tblSignOnOff SET StormOut = @StormOut WHERE id = @id";    
command.Parameters.AddWithValue("@StormOut", storm.StormOut);
command.Parameters.AddWithValue("@id", 1902);

【讨论】:

  • 那是粗鲁的复制和粘贴
  • @Byyo 如果你真的认为我复制粘贴你的答案,告诉我,我会删除我的..
猜你喜欢
  • 2019-12-28
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多