我有一个本地MS SQL数据库,我想更新其中一个位字段。 我有以下代码:
static void UpgradeVevo(string nev)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = new SqlCommand("UPDATE Vevok SET Torzsvendeg=True Where Nev=" + nev, connection);
command.ExecuteNonQuery();
}
Console.WriteLine(nev+" mostmár törzsvendég");
}
Torzsvendeg是一种数据类型(我试图将其值设置为1),而Nev是varchar。
连接字符串应该没问题,因为我在另一种方法中尝试了Select,它工作正常。上面的代码没有抛出任何异常,但表格没有更新。
我试图找到答案很长一段时间没有成功:/。感谢您的帮助!
答案 0 :(得分:1)
True
应该在一个引号中,因为它是一个字符串文字,如
UPDATE Vevok SET Torzsvendeg='True'
好兄弟,你搞砸了报价。您的查询应该看起来像
"UPDATE Vevok SET Torzsvendeg = 1 Where Nev = '" + nev + "'"
再次使用参数化查询而不是这个连接的查询以避免 SQL注入
答案 1 :(得分:0)
如果列是布尔值(sql server中的位),则必须编写
Torzsvendeg=1
而不是
Torzsvendeg='True'
要么
Torzsvendeg=True
修改强>
请试试这个:
static void UpgradeVevo(string nev)
{
var connection = new SqlConnection(connectionString))
connection.Open(); // try doing this without a using
SqlCommand command = new SqlCommand("UPDATE Vevok SET Torzsvendeg=@enabled Where Nev=@nev", connection);
command.Parameters.AddWithValue(@"enabled", 1);
command.Parameters.AddWithValue(@"nev", "vevo123");
command.ExecuteNonQuery();
command.Parameters.Clear(); // always clear after executed
// close connection when you shut down your application
connection.Close();
connection.Dispose();
Console.WriteLine(nev+" mostmár törzsvendég");
}