对于SQL Server,C#boolean需要转换为bit,因此它需要为1而不是True
我有一个数据类型为对于SQL Server,C#boolean需要转换为bit,因此它需要为1而不是True,c#,sql-server,type-conversion,sqldatatypes,C#,Sql Server,Type Conversion,Sqldatatypes,我有一个数据类型为bool的C#属性,当它被设置时,它会变成True或False 但是,我需要它与类型为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 =
bool
的C#属性,当它被设置时,它会变成True
或False
但是,我需要它与类型为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语句是
这会导致错误:
无效的列名“True”
你错过了单引号。像这样改变:
string querystring = "UPDATE tblSignOnOff SET StormOut = '" + storm.StormOut + "' WHERE id = 1902";
但有一个重要的注意事项:您应该始终像下面这样使用。这种类型的字符串连接适用于:
您应该使用参数并避免字符串连接
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();
}
}
进一步修改@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);
好的,很酷,我想我要做的是将布尔值转换为“Convert.ToInt16”。这将使真/假、0或1“Yes to:”使用参数化查询“!永远不要通过简单地连接字符串/值来构建sql语句。您可以尝试使用
参数。AddWithValue
进行参数化查询,这可能有助于您了解Add与AddWithValue的区别?我个人会避免AddWithValue
,直接指定类型并使用Value
属性,但这至少比原始代码好…@JonSkeet我不懂你的意思。使用价值属性?例如?@Byyo:它避免使用你不想要的推论。例如,这是一个粗鲁的抄袭&paste@Byyo如果你真的认为我复制粘贴了你的答案,告诉我,我会删除我的。。
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();
}
}
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);