c# - 使用 SQL 更新特定行

标签 c# sql-server asp.net-mvc

我需要通读一个表中的所有记录,对于每条记录,如果满足特定条件,则在该记录上设置一个标志,值为 true 或 false。发生的是我的方法为每条记录插入 true。

如何让我的方法根据条件插入 true 或 false?

例如,如果我在 Code 列中的值为 11,则在该记录的 Flag 列中插入一个 true,但是如果 Code 列的值为 7,然后插入一个 false。

查询:

string select = "SELECT * FROM Movies";

读取记录的方法:

using (SqlDataReader sdr = cmd.ExecuteReader())
{
    while (sdr.Read())
    {

        if (string.IsNullOrEmpty(sdr["Code"].ToString()))
        {
            C_E = "0";
            this.Update(C_E);
            //ViewBag.Message = "cero";
        }
        else
        {
            C_E = sdr["Code"].ToString();
            this.Update(C_E);
            // ViewBag.Message = C_E;
        }

    }
}

更新表的方法:

private string Update(string C_E)
{

    ReglaController re = new ReglaController();

    string query = "UPDATE Movies SET Flag = @code";

    string constr = ConfigurationManager.ConnectionStrings["Constring"].ConnectionString;

    using (SqlConnection con = new SqlConnection(constr))
    {

        SqlCommand command = new SqlCommand(query, con);
        //command.Parameters.Add("@code", SqlDbType.NChar).Value = ("o");
        command.Parameters.Add("@code", SqlDbType.NChar).Value = re.Condition(C_E);

        con.Open();
        command.ExecuteNonQuery();

    }

    return C_E;
}   

条件测试方法:

public string Regla_4(string C_E)
{
    string query = "SELECT Emp.Code FROM Empresas WHERE Emp.Code = @codigo";
    string R2 = "l";

    string constr = ConfigurationManager.ConnectionStrings["Constring"].ConnectionString;

    using (SqlConnection con = new SqlConnection(constr))
    {
        SqlCommand command = new SqlCommand(query, con);
        command.Parameters.Add("@codigo", SqlDbType.Int).Value = C_E;

        con.Open();
        command.ExecuteNonQuery();

        using (SqlDataReader sdr = command.ExecuteReader())
        {

            if (sdr.HasRows)
            {
                R2 = "True";
            }
            else
            {
                R2 = "False";
            }
        }

    }
}

最佳答案

问题是你的更新查询没有告诉数据库要更新哪一行,所以它更新了整个表。您需要通过包含 WHERE 子句来告诉它要更新哪一行。

关于c# - 使用 SQL 更新特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53046151/

相关文章:

c# - .Net 包含页面 - 像 php require

sql-server - 表 '...' 中的计算列 '...' 无法持久化,因为该列是不确定的?

c# - 将 MySQL .DMP 文件转换为 MS Sql Server 2005 的 .SQL 文件

c# - 如何将 Angular POST 发送到 C# Asp.Net MVC Controller ?

c# - Caliburn Micro - 文本框中的文本不会显示

javascript - 我有一个 **Rad 组合框**,其中有两个分隔符。如何仅从分隔符中删除复选框?

c# - 递归树搜索返回错误的结果

mysql - 使用更新查询按第一个表的列更新第二个表的列

asp.net - ASP.NET MVC 页面中没有 Intellisense 的 Visual Studio 2015 编辑器异常

asp.net-mvc - MVC 4 : Force ScriptBundle to return non-optimized links of Javascriptfiles