Board logo

標題: 2011 04 16 資料庫操作- 修改使用者密碼 [打印本頁]

作者: buy    時間: 2011-4-16 10:55     標題: 2011 04 16 資料庫操作- 修改使用者密碼

[attach]195[/attach]
作者: p17johnny    時間: 2011-4-16 12:00

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;

  9. namespace Ex20110312_02
  10. {
  11.     public partial class FormMain : Form
  12.     {
  13.         public FormMain()
  14.         {
  15.             InitializeComponent();
  16.         }

  17.         string CurrentLoginUser = "";



  18.         private void btnSave_Click_1(object sender, EventArgs e)
  19.         {
  20.             //前置判斷,判斷使用者申請的帳號有無非法字元:" " "," "." "@" Regular Expression
  21.             if (tbxUserId.Text.Trim() == "" )
  22.             {
  23.                 MessageBox.Show("請輸入帳號");
  24.                 return;
  25.             }


  26.             Database1Entities db = new Database1Entities();  //把資料庫實體化
  27.             var addobj = new TestDB  //設定要加入資料庫的一筆資料
  28.             {
  29.                 id = db.TestDB.NextId(a=>a.id),
  30.                 UserID = tbxUserId.Text,
  31.                 UserPW = tbxUserPW.Text
  32.             };

  33.             db.TestDB.AddObject(addobj); //新增一筆'資料

  34.             try //還會有更好方法
  35.             {
  36.                 db.SaveChanges(); //儲存
  37.             }
  38.             catch (System.Data.UpdateException)
  39.             {
  40.                 MessageBox.Show("您的帳號已經存在");
  41.             }
  42.             
  43.             RefreshDataGridView(); //更新畫面
  44.         }

  45.         private void Form1_Load(object sender, EventArgs e)
  46.         {
  47.             
  48.             Database1Entities db = new Database1Entities();
  49.             var result = from s in db.TestDB select s;
  50.             dataGridView1.DataSource = result;
  51.         }


  52.         //更新畫面
  53.         private void RefreshDataGridView()
  54.         {
  55.             Database1Entities db = new Database1Entities();
  56.             var result = from s in db.TestDB select s;
  57.             dataGridView1.DataSource = result;
  58.         }



  59.         //登入
  60.         private void button3_Click(object sender, EventArgs e)
  61.         {
  62.             string UserID = tbxLoginUserId.Text;
  63.             string UserPW = tbxLoginUserPW.Text;
  64.             Database1Entities db = new Database1Entities();  //把資料庫實體化

  65.             //LinQ語法不曉得資料庫怎麼定義,所以選取時候預設結果是複數個。
  66.             var result = (from s in db.TestDB where s.UserID == UserID  select s).FirstOrDefault();

  67.             if (result == null)
  68.             {
  69.                 MessageBox.Show("查無此帳號,請先註冊帳號");
  70.                 return;
  71.             }
  72.             else
  73.             {
  74.                 if (result.UserPW == UserPW)
  75.                 {   //記住目前使用者的UserId
  76.                     CurrentLoginUser = result.UserID;  
  77.                     MessageBox.Show("登入成功");
  78.                 }
  79.                 else
  80.                 {
  81.                     MessageBox.Show("密碼錯誤");
  82.                     return;
  83.                 }
  84.             }
  85.         }

  86.         //public FileResult BMP()
  87.         public Bitmap GetBMP()
  88.         {
  89.            string[] Code ={ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
  90.                            "N",  "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
  91.                             "1", "2", "3", "4", "5", "6", "7", "8", "9" };

  92.            string strRd = string.Empty; //string strRd = "";

  93.            Random rd = new Random(); //unchecked((int)DateTime.Now.Ticks)   
  94.             //******
  95.            Bitmap Bmp = new Bitmap(150, 50);  //建立實體圖檔並設定大小

  96.            Graphics Gpi = Graphics.FromImage(Bmp);
  97.          
  98.            Font Font1 = new Font("Verdana", 20, FontStyle.Italic);
  99.            
  100.            for (int i = 0; i < 5; i++)       // 亂數產生驗證文字
  101.            {
  102.               strRd += Code[rd.Next(34)];
  103.            }
  104.            Pen PenLine = new Pen(Brushes.Red, 2);  //實體化筆刷並設定顏色、大小(畫X,Y軸用)
  105.            Gpi.Clear(Color.Black);    //設定背景顏色為黑色
  106.          

  107.            Gpi.DrawLine(PenLine, 0, rd.Next(80), 90, rd.Next(25)); //畫直線
  108.            Gpi.DrawString(strRd, Font1, Brushes.AntiqueWhite, 0, 0);
  109.            Gpi.DrawBezier(PenLine, new Point(rd.Next(80), rd.Next(80)), new Point(rd.Next(80), rd.Next(80)), new Point(rd.Next(80), rd.Next(80)), new Point(rd.Next(80), rd.Next(80)));
  110.            for (int i = 0; i <= 25; i++)            //亂數產生霧點,擾亂機器人辨別
  111.            {
  112.                int RandPixelX = rd.Next(0, 80);
  113.                int RandPixelY = rd.Next(0, 25);
  114.                Bmp.SetPixel(RandPixelX, RandPixelY, Color.Pink);
  115.            }
  116.            
  117.            //Session["ValidateCode"] = strRd;        //將驗證碼存入Session以便稍後進行驗
  118.            //System.IO.MemoryStream s = new System.IO.MemoryStream();        
  119.            //Bmp.Save(s, System.Drawing.Imaging.ImageFormat.Gif);
  120.            //return File(s.GetBuffer(), "image/gif");
  121.            return Bmp;
  122.        }

  123.         private void getPWBMP_Click(object sender, EventArgs e)
  124.         {
  125.             pictureBox1.Image = GetBMP();
  126.         }

  127.         Form2 f2 = new Form2();
  128.         private void button1_Click(object sender, EventArgs e)
  129.         {           
  130.             f2.Show();
  131.         }

  132.         private void button2_Click(object sender, EventArgs e)
  133.         {
  134.             MessageBox.Show(f2.GetParam());
  135.         }

  136.         //使用者修改密碼
  137.         private void btnChangePwd_Click(object sender, EventArgs e)
  138.         {
  139.             if (CurrentLoginUser == "")
  140.             {
  141.                 MessageBox.Show("請先登入");
  142.                 return;
  143.             }
  144.             else
  145.             {
  146.                 Database1Entities db = new Database1Entities();  //把資料庫實體化
  147.                 var result = (from s in db.TestDB where s.UserID == CurrentLoginUser select s).FirstOrDefault();
  148.                 //1. 先看原密碼對不對
  149.                 if (result.UserPW == tbxOriginal.Text)
  150.                 {
  151.                     //2. 判斷使用者輸入的兩次密碼是否相同
  152.                     if (tbxChange.Text == tbxChange2.Text)
  153.                     {
  154.                         //3.*防範使用者新密碼輸入空白
  155.                         if (tbxChange.Text.Trim() == "")
  156.                         {
  157.                             return;
  158.                         }
  159.                         //4.修改使用者密碼
  160.                         result.UserPW = tbxChange.Text;
  161.                         db.SaveChanges();
  162.                         MessageBox.Show("FInish changing");
  163.                         RefreshDataGridView();
  164.                            

  165.                         //* 顯示成功訊息,更新dataGridView
  166.                     }
  167.                     else
  168.                     {
  169.                         MessageBox.Show("兩次新密碼輸入不相同!");
  170.                         return;
  171.                     }
  172.                 }
  173.                 else
  174.                 {
  175.                     MessageBox.Show("密碼錯誤!");
  176.                     return;
  177.                 }
  178.             }
  179.         }
  180.     }

  181.     //手工打造
  182.     class FakeTestDB
  183.     {
  184.         public int id { get; set; }
  185.         public string UserID { get; set; }
  186.         public string UserPW { get; set; }
  187.     }

  188. }
複製代碼

作者: p17johnny    時間: 2011-4-16 12:02

PPajflijsafieljsaefasdfasdf




歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/) Powered by Discuz! 7.2