C# Oracle数据库表中的数据未完全更新

C# Oracle数据库表中的数据未完全更新,c#,oracle,C#,Oracle,我想在查询Oracle数据库表并对从某些字段检索到的数据应用加密功能后更新该表。但是,我的代码(以下)无法正常工作: private void button2_Click(object sender, EventArgs e) { using (OracleConnection conn = new OracleConnection(oradb)) conn.Open(); OracleCommand select

我想在查询Oracle数据库表并对从某些字段检索到的数据应用加密功能后更新该表。但是,我的代码(以下)无法正常工作:

    private void button2_Click(object sender, EventArgs e)
    {
        using (OracleConnection conn = new OracleConnection(oradb))
            conn.Open();
            OracleCommand select = new OracleCommand("select  empno,FNAME,LNAME from employee", conn);
            OracleDataReader reader = select.ExecuteReader();
            Int64 vempno = 0;
            String fnameValue = "";
            String lnameValue = "";
            String afterConcatfname = "";
            String afterConcatlname = "";

           if (reader.HasRows)
            {
                while (reader.Read())
                {
                    vempno = reader.GetInt64(0);
                    fnameValue = reader.GetString(1);
                    lnameValue = reader.GetString(2);
                    REA rea = new REA();
                    afterConcatfname = rea.Encrypt(fnameValue, rea.GenerateKey());
                    afterConcatlname = rea.Encrypt(lnameValue, rea.GenerateKey());
                }

                reader.Close();
                }

            OracleCommand update = new OracleCommand("update employee set fname =:fname, lname =:lname where empno =:empno", conn);
            OracleParameter fname = new OracleParameter("fname", afterConcatfname);
            OracleParameter lname = new OracleParameter("lname", afterConcatlname);
            OracleParameter empno = new OracleParameter("empno", vempno);
            update.Parameters.Add(fname);
            update.Parameters.Add(lname);
            update.Parameters.Add(empno);
            update.ExecuteNonQuery();
        }
我没有收到任何错误,但该程序只加密最后一条记录的所有加密值。我想加密每一行


我没有收到任何错误,但该程序仅用所有加密值加密最后一条记录

这就是代码的逻辑。基本上,您所做的是:

loop
    read one row
    encrypt one row
end loop
update one row
“我想逐行加密”

因此,您需要将更新逻辑移动到循环中,以便为每一行执行更新逻辑


更好的解决方案是用集合操作替换逐行处理,但这是另一个问题。

当你问这样的问题时,解释收到的错误应该是你的第一件事。我猜更新逻辑需要在循环中,所以它每行执行一次。我猜using语句块只包含对Open的调用,而不包含其他内容。因此,没有连接,错误很多。我没有收到任何错误,但该程序仅用所有加密值加密最后一条记录,我想逐行加密尝试发布一个,它将帮助您更快地获得答案。