ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
การเข้าถึงฐานข้อมูล ด้วยกลุ่ม object ADO.NET
2
กลุ่ม object หลักของสถาปัตยกรรม ADO.NET
(ActiveX Data Object) ADO.NET OleDbConnection OleDbCommand OleDbDataReader OleDbDataAdapter DataSet SqlConnection SqlDataAdapter SqlCommand SqlDataReader
3
หน้าที่ของแต่ละ object
Connection ทำหน้าที่สร้างการเชื่อมต่อเข้ากับฐานข้อมูล OleDbConnection ติดต่อกับ Access, Oracel, SQL Server, MySQL SqlConnection ติดต่อกับ SQL Server DataAdapter ทำหน้าที่เก็บชุดคำสั่ง SQL เพื่อคิวรีข้อมูลออกมาจากฐานข้อมูล ผลลัพธ์ที่ได้คือออบเจ็กต์ DataSet DataSet ทำหน้าที่เก็บผลลัพธ์จาการทำคิวรีข้อมูลจากฐานข้อมูลที่ได้จาก DataAdapter Command ทำหน้าที่เก็บชุดคำสั่ง SQL เพื่อคิวรีข้อมูลออกมาจากฐานข้อมูล ผลลัพธ์ที่ได้คือออบเจ็กต์ DataReader DataReader ทำหน้าที่เก็บผลลัพธ์จาการทำคิวรีข้อมูลจากฐานข้อมูลที่ได้จาก Command
4
การใช้งาน DataSet DataSet อ่านข้อมูลทั้งหมดที่คิวรีได้ภายในครั้งเดียว โดยใช้คำสั่ง Fill() ของ DataAdapter เหมาะกับการอ่านข้อมูลจำนวนมาก สามารถจัดการข้อมูลที่ตัว DataSet เองได้ ใน 1 DataSet สามารถเก็บผลลัพธ์จากการคิวรีได้หลายๆ ครั้งโดยตั้งชื่ออ้างอิงที่ แตกต่างกันออกไป
5
ตัวอย่างการใช้งาน DataSet
ตัวอย่างตาราง User
6
ตัวอย่าง DataSet
7
การใช้งาน DataReader DataReader อ่านข้อมูลออกมาครั้งละ 1 record โดยใช้คำสั่ง Read() เหมาะกับการ อ่านข้อมูลจำนวนน้อยๆ มีการทำงานเร็วกว่า DataSet ถ้าต้องการอ่านข้อมูลจำนวนมากขึ้นต้องมีการเก็บผลลัพธ์ไว้ใน DataTable โดยใช้คำสั่ง Load() การอ่านข้อมูลของ DataReader นั้นเป็นการอ่านข้อมูลโดยการเลื่อน pointer ไปข้างหน้าเพียงอย่างเดียว (forward-only)
8
ตัวอย่าง DataReader (1)
9
ตัวอย่าง DataReader (2)
10
Namespace ของ ADO.NET System.Data
System.Data.SqlClient // ติดต่อกับ SQL Server System.Data.OleDb // ติดต่อกับ Access, Oracle, MySQL
11
สร้างฐานข้อมูล และตาราง
สร้างฐานข้อมูลใหม่ Project > add new item > SQL Server Database ตั้งชื่อฐานข้อมูลเป็น Company.mdf สร้างตารางโดยไปที่ Database explorer > table > add new table กำหนดให้สร้างตาราง Group เก็บข้อมูลประเภทของผู้ใช้งาน และตาราง User เก็บข้อมูลผู้ใช้งาน
12
ตาราง Group ตาราง User
13
ตาราง Group ตาราง User
14
Database diagram สร้าง Database diagram เพื่อสร้างความสัมพันธ์ระหว่างตาราง โดยคลิ๊กที่ Database diagram > add new diagram
15
สร้างคลาส dbcon (แบบ static) เพื่อเชื่อมต่อฐานข้อมูล
public static class dbcon { public static SqlConnection conn = null; private static string constr Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Company.mdf; Integrated Security=True;Connect Timeout=30;User Instance=True"; public static void connectToDB() { conn = new SqlConnection(constr); if (conn.State == ConnectionState.Open) { conn.Close(); } conn.Open(); public static void closeDB() {
16
สร้างหน้าสมัครสมาชิก Register.aspx
เขียนเมธอด connect_db() ภายในหน้านี้ เพื่อทดสอบว่าสามารถเชื่อมต่อฐานข้อมูล ได้สำเร็จ (โดยเรียกใช้เมธอด connectToDB() ที่เคยได้เขียนไว้แล้วในคลาส dbcon) โดยต้องทดสอบเมธอด connect_db() นี้ โดยเรียกใช้จาก Page_Load() protected void connect_db() { try { dbcon.connectToDB(); Response.Write(“เชื่อมต่อฐานข้อมูลสำเร็จ<br />"); } catch (Exception ex) { Response.Write("เชื่อมต่อฐานข้อมูลไม่สำเร็จ <br />" + ex);
17
สร้างฟอร์มสำหรับกรอกข้อมูลผู้ใช้งาน
18
เขียนคำสั่งให้ดึงข้อมูลฟิลด์ groupName จากตาราง Group มาแสดงใน DropDownList
protected void select_group() { connect_db(); string select_sql = "select * from [Group]"; //ประมวลผลคำสั่งsql โดยใช้ SqlCommand โดยมี connection ส่งเข้าไปเป็นพารามิเตอร์ SqlCommand cmd = new SqlCommand(select_sql, dbcon.conn); //สร้างdatareader เพื่ออ่านข้อมูลผลลัพธ์ที่ได้ SqlDataReader reader = cmd.ExecuteReader(); //สร้างdatatable เพื่อเก็บผลลัพธ์ที่ได้อีกต่อหนึ่ง DataTable dt = new DataTable(); //โหลดผลลัพธ์จาก datareader มาเก็บใน datatable dt.Load(reader); //สั่งให้แสดงผลลัพธ์ใน dropdownlist ddlGroup.DataSource = dt; ddlGroup.DataTextField = "groupName"; //ชื่อฟิลด์ที่แสดงผล ddlGroup.DataValueField = "groupID"; //ชื่อฟิลด์ที่returnค่าออกมา ddlGroup.DataBind(); //สั่งbind ให้แสดงผลลัพธ์จาก datatable ลงใน dropdown //ddlGroup.Items.Insert(0, "please select"); dbcon.closeDB(); }
19
เรียกใช้เมธอด select_group จาก Page_Load
protected void Page_Load(object sender, EventArgs e) { if (Page.IsPostBack == false) //คือเปิดเพจมาครั้งแรก select_group(); } ** property IsPostBack จะเป็น true ก็ต่อเมื่อเพจนั้นถูกเปิดมาแล้วเป็นครั้งที่ 2 ขึ้น ไป (เช่นผู้ใช้กด refresh หรือมี event อื่นเกิดขึ้นในหน้านั้นแล้ว)
20
ก่อนจะ insert ข้อมูลผู้ใช้ ให้ตรวจสอบก่อนว่า username นั้นไม่ซ้ำกับข้อมูลที่มีอยู่แล้ว
protected bool valid_username() { connect_db(); string select_sql = “……………………………………………………………….."; SqlCommand cmd = new SqlCommand(select_sql, dbcon.conn); cmd.Parameters.AddWithValue(“ชื่อพารามิเตอร์", ค่าที่กำหนดให้); SqlDataReader reader = cmd.ExecuteReader(); if (reader.HasRows) { lbCheck.Text= "Username ถูกใช้งานแล้ว"; dbcon.closeDB(); return false; } lbCheck.Text = "สามารถใช้ Username นี้ได้"; return true;
21
เมื่อกดปุ่ม Register ให้ insert ข้อมูลลงตาราง user
protected void btnRegister_Click(object sender, EventArgs e) { if (valid_username()) { //check ก่อนว่า username นี้ยังไม่ถูกใช้งาน try { connect_db(); //กำหนดคำสั่ง sql insert ข้อมูลลงตาราง SqlCommand insert_cmd = new SqlCommand(“………………………", …………………); //ให้ค่าพารามิเตอร์ต่างๆ insert_cmd.Parameters.AddWithValue(“………..", ………………….); ……. //ประมวลผลคำสั่ง sql ใช้ ExecuteNonQuery() คือไม่ return ผลลัพธ์แถวกลับมา insert_cmd.ExecuteNonQuery(); lbStatus.Text = "เพิ่มข้อมูลสำเร็จ"; } catch (SqlException se) { lbStatus.Text ="เพิ่มข้อมูลไม่สำเร็จ " + se.ToString(); dbcon.closeDB(); else { lbStatus.Text = "เพิ่มข้อมูลไม่สำเร็จ เนื่องจาก username นี้ถูกใช้แล้ว";
22
แบบฝึกหัด สร้างหน้า Default.aspx
ปุ่ม register ให้ลิ้งค์ไปหน้า Register.aspx ปุ่ม login เมื่อผู้ใช้กรอก username และ password แล้วให้ไปตรวจสอบว่าข้อมูลทั้งสอง ตรงกับในฐานข้อมูลหรือไม่ ถ้าตรงกัน ก็ให้เข้าสู่ระบบได้แล้วลิ้งค์ไปหน้าใหม่ก็ได้(สร้างมาเพิ่มเติม) ถ้าไม่ตรงกัน ก็แจ้งเตือนว่าให้ตรวจสอบ username, password อีกครั้งผ่าน label เพิ่มเติม: ถ้าสามารถแยกความแตกต่างของกลุ่มผู้ใช้ได้จะได้คะแนนเพิ่ม เช่น username: ton อยู่ groupID ที่ 2 คือเป็น employee ก็ให้ลิ้งค์มาหน้า employee username: tea อยู่ groupID ที่ 4 คือเป็น manager ก็ให้ลิ้งค์มาหน้า manager
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.