我有一个C#属性,其数据类型为bool
,当它设置后,它变为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语句是
UPDATE tblSignOnOff
SET StormOut = True
WHERE id = 1902
导致错误:
无效的列名称'True'。
答案 0 :(得分:3)
你错过了单引号。改变如下:
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);
答案 1 :(得分: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();
}
}
答案 2 :(得分:-1)
进一步修改@ 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);