C#MS SQL Update语句不更新数据库

时间:2017-05-12 21:18:35

标签: c# sql

我有一个本地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,它工作正常。上面的代码没有抛出任何异常,但表格没有更新。

我试图找到答案很长一段时间没有成功:/。感谢您的帮助!

2 个答案:

答案 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");
}