Member 13686623 Ответов: 1

Как обновить пароль и сохранить запись текущего пароля в другой таблице


Я работаю в dot net с c# , LINQ и SQL server в качестве базы данных
У меня есть три таблицы s_reg,s_log,s_pass
s_reg имеет первичный ключ reg_id,s_log имеет log_id и reg_id в качестве первичного и внешнего ключа соответственно,s_pass имеет pass_id и log_id в качестве первичного и внешнего ключа
Я хочу обновить пароль идентификатора в s_reg и сохранить старый пароль в таблице s_pass, а также обновить новый пароль в таблице s_log с помощью reg_id
я обновил столбец пароля в s_reg, но он принимает только reg_id(так как он находится на автоматическом инкременте) и новый пароль вместо старого и показывает оставшиеся поля как NULL
также изменения происходят в таблицах s_log и s_pass, но обе они не принимают reg_id, столбец reg_id показывает либо NULL, либо 0

Что я уже пробовал:

protected void Button1_Click(object sender, EventArgs e)
   {
       using (studentDataContext ps = new studentDataContext())
       {


           var check = (from m in ps.s_regs
                        join s in ps.s_logs on m.reg_id equals s.reg_id
                        where s.susnm == TextBox1.Text && s.spass == TextBox2.Text
                        select new { s, m }).FirstOrDefault();
           if (check != null)
           {
               try
               {
                   s_log log = new s_log();
                   using (studentDataContext database = new studentDataContext())//update column
                   {
                       var up = ps.s_regs.Where(a => a.spass == TextBox2.Text).FirstOrDefault();
                       if (up != null)
                       {
                           s_reg reg = new s_reg();
                           reg.spass = TextBox2.Text;
                           ps.s_regs.InsertOnSubmit(reg);
                           ps.SubmitChanges();
                           Response.Write("<script>alert('save successfuly');</script>");
                       }

                       else
                       {
                           up.spass = TextBox3.Text;
                           log.reg_id = reg.reg_id;
                           ps.SubmitChanges();
                           Response.Write("<script>alert('Update successfuly');</script>");
                       }

                   }
                   s_pass ureg = new s_pass();

                   var chk = (from m in ps.s_passes
                              join n in ps.s_regs on m.reg_id equals n.reg_id
                              select new { m.ppass, n.sname }).FirstOrDefault();
                   if (chk != null)
                   {
                       try
                       {

                           ureg.pname = TextBox5.Text;
                           ureg.puname = TextBox1.Text;
                           ureg.ppass = TextBox2.Text;
                           ureg.reg_id = reg.reg_id;
                           ps.s_passes.InsertOnSubmit(ureg);
                           ps.SubmitChanges();
                       }
                       catch (Exception ex)
                       {
                           Response.Write("Error:" + ex.Message);
                       }

                       var query = (from ord in ps.s_logs
                                    join trd in ps.s_regs
                                    on ord.reg_id equals trd.reg_id
                                    where trd.susnm == TextBox1.Text
                                    select new { ord, trd }).FirstOrDefault();
                       if (query != null)
                       {
                           try
                           {
                               log.susnm = TextBox1.Text;
                               log.spass = TextBox3.Text;
                               log.reg_id = reg.reg_id;

                               ps.s_logs.InsertOnSubmit(log);
                               ps.SubmitChanges();
                           }

                           catch (Exception ex)
                           {
                               Response.Write("Error:" + ex.Message);
                           }
                       }
                   }


           else
           {
                   ScriptManager.RegisterStartupScript(Page, Page.GetType(), "str", "alert(' please check user name and password ');", true);
               }

           }
               catch (Exception ex)
               {
                   Response.Write("Error:" + ex.Message);
               }
           }
       }
   }

1 Ответов

Рейтинг:
2

OriginalGriff

Не делай этого так! Никогда не храните пароли в открытом виде - это серьезная угроза безопасности. Здесь есть некоторая информация о том, как это сделать: Хранение паролей: как это сделать.[^]


Richard MacCutchan

Может быть, он работает на ТСБ.