การเข้าถึงฐานข้อมูล ด้วยกลุ่ม object ADO.NET

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
สถาปัตยกรรมเทียร์ TIER ARCHITECTURE.
Advertisements

BC421 File and Database Lab
Ajax อ.วชิระ หล่อประดิษฐ์ ระบบสารสนเทศทางคอมพิวเตอร์
บทที่ 5 Visual C#.NET กับ ฐานข้อมูล
Chapter IV : สร้างการติดต่อ
Chapter VII : การแก้ไขข้อมูล
เอกสารประกอบการบรรยาย เรื่อง ASP and Database
สถาปัตยกรรม ActiveX Data Object (ADO)
การเขียนคำสั่งเชื่อมต่อฐานข้อมูล
การโปรแกรมเชิงวัตถุ (Object-Oriented Programming)
ASP [#15] การใช้งาน ASP กับ Mysql ผ่าน ODBC การทำสมุดเยี่ยม Guestbook
ASP [ # 11 ] เตรียมความพร้อมก่อนติดต่อกับ Ms Access
HTTP Client-Server.
ครั้งที่ 7 Composition.
เอกสารประกอบการบรรยาย เรื่อง ASP and Database
ASP:ACCESS Database.
Seree Chinodom Recordset Object Seree Chinodom Computer Science, BUU.
Seree Chinodom Connection Object Seree Chinodom Computer Science, BUU.
ASP:ACCESS Database.
ASP กับฐานข้อมูล.
การเชื่อมต่อกับฐานข้อมูล
การเชื่อมต่อฐานข้อมูลด้วย PHP
Php with Database Professional Home Page :PHP
คลาสและวัตถุ (2) (Class & Object)
บทที่ 1 หลักการเขียนโปรแกรมเชิงวัตถุ
คลาสและวัตถุ (3) (Class & Object)
คลาสและวัตถุ (4) (Class & Object)
บทที่ 4 Method (2).
คลาสและวัตถุ (3) (Class & Object). w5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 24, 25 as5_000.rar การใช้งานเมธอดภายในคลาสเดียวกัน ข้อ 23 2.
บทที่ 4 Method (1).
Database Programming Exceed Camp #2 24 October 2005.
C# Programming Exceed Camp: Day 3.
สร้างตารางเพิ่มเติม สร้างตารางโดยไปที่ Database explorer > table > add new table กำหนดให้สร้างตาราง UserPic เก็บข้อมูลรูปภาพของผู้ใช้งาน.
การใช้งาน GridView FormView การแสดงรูปภาพ
1.  สร้าง datasource ติดต่อกับตาราง UserPic เพื่อเลือก username และ รูปภาพขึ้นมาแสดงผล โดยให้ ค่าพารามิเตอร์ username มาจาก Session "SELECT * FROM [UserPic]
การใช้งาน Ajax.
ASP.NET Server Control.
การเชื่อมต่อฐานข้อมูล โดยใช้คอนโทรล SQLDataSource
PHP:Hypertext Preprocessor
ความสัมพันธ์ระหว่างคลาส (Class Relationship)
การใช้งาน ASP.NET 3.5 ด้านฐานข้อมูล
เขียนโปรแกรมเพื่อแสดงข้อมูลพนักงาน ด้วย ADO.NET vs. DataReader
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
บทที่ 3 การทำงานกับฟอร์ม (Form)
การเขียนโปรแกรม PHP เชื่อมต่อกับ MySQL
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
ฟังก์ชัน.
Object-Oriented Programming
การใช้ PHP ติดต่อฐานข้อมูลMySQL
การใช้ PHP ติดต่อฐานข้อมูลผ่าน ODBC
การใช้งานระบบจัดการฐานข้อมูล Mysql ผ่าน phpmyadmin
บทที่ 3 Class and Object (2).
CHAPTER 12 SQL.
Introduction to PHP, MySQL – Special Problem (Database)
ADO.NET (การบริหารและจัดการข้อมูล)
ASP เตรียมความพร้อมก่อนติดต่อกับ Ms Access การนำข้อมูลจากตารางมาแสดง
SQL Structured Query Language.
BCS 121 บท 5 การโปรแกรมเชิงวัตถุ (Object-Oriented Programming)
บทที่ 9 การใช้งานฟอร์มและคอนโทรลต่าง ๆ
PHP with MySQL.
Recursive Method.
การสร้างฟอร์ม(Form) ด้วยภาษา HTML
TECH30201 Object-Oriented Programming
เครื่องมือที่ใช้ JUnit4.8.1 on Eclipse SDK3.5.2 ขึ้นไป
การใช้ PHP ติดต่อฐานข้อมูล
เริ่มต้นเขียนโปรแกรมภาษาจา วา (Introduction to JAVA Programming)
สำนักวิชาเทคโนโลยีสารสนเทศและการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา
JSP ติดต่อฐานข้อมูล.
บทที่ 10 การเชื่อมต่อฐานข้อมูล
ใบสำเนางานนำเสนอ:

การเข้าถึงฐานข้อมูล ด้วยกลุ่ม object ADO.NET

กลุ่ม object หลักของสถาปัตยกรรม ADO.NET (ActiveX Data Object) ADO.NET OleDbConnection OleDbCommand OleDbDataReader OleDbDataAdapter DataSet SqlConnection SqlDataAdapter SqlCommand SqlDataReader

หน้าที่ของแต่ละ object Connection ทำหน้าที่สร้างการเชื่อมต่อเข้ากับฐานข้อมูล OleDbConnection ติดต่อกับ Access, Oracel, SQL Server, MySQL SqlConnection ติดต่อกับ SQL Server DataAdapter ทำหน้าที่เก็บชุดคำสั่ง SQL เพื่อคิวรีข้อมูลออกมาจากฐานข้อมูล ผลลัพธ์ที่ได้คือออบเจ็กต์ DataSet DataSet ทำหน้าที่เก็บผลลัพธ์จาการทำคิวรีข้อมูลจากฐานข้อมูลที่ได้จาก DataAdapter Command ทำหน้าที่เก็บชุดคำสั่ง SQL เพื่อคิวรีข้อมูลออกมาจากฐานข้อมูล ผลลัพธ์ที่ได้คือออบเจ็กต์ DataReader DataReader ทำหน้าที่เก็บผลลัพธ์จาการทำคิวรีข้อมูลจากฐานข้อมูลที่ได้จาก Command

การใช้งาน DataSet DataSet อ่านข้อมูลทั้งหมดที่คิวรีได้ภายในครั้งเดียว โดยใช้คำสั่ง Fill() ของ DataAdapter เหมาะกับการอ่านข้อมูลจำนวนมาก สามารถจัดการข้อมูลที่ตัว DataSet เองได้ ใน 1 DataSet สามารถเก็บผลลัพธ์จากการคิวรีได้หลายๆ ครั้งโดยตั้งชื่ออ้างอิงที่ แตกต่างกันออกไป

ตัวอย่างการใช้งาน DataSet ตัวอย่างตาราง User

ตัวอย่าง DataSet

การใช้งาน DataReader DataReader อ่านข้อมูลออกมาครั้งละ 1 record โดยใช้คำสั่ง Read() เหมาะกับการ อ่านข้อมูลจำนวนน้อยๆ มีการทำงานเร็วกว่า DataSet ถ้าต้องการอ่านข้อมูลจำนวนมากขึ้นต้องมีการเก็บผลลัพธ์ไว้ใน DataTable โดยใช้คำสั่ง Load() การอ่านข้อมูลของ DataReader นั้นเป็นการอ่านข้อมูลโดยการเลื่อน pointer ไปข้างหน้าเพียงอย่างเดียว (forward-only)

ตัวอย่าง DataReader (1)

ตัวอย่าง DataReader (2)

Namespace ของ ADO.NET System.Data System.Data.SqlClient // ติดต่อกับ SQL Server System.Data.OleDb // ติดต่อกับ Access, Oracle, MySQL

สร้างฐานข้อมูล และตาราง สร้างฐานข้อมูลใหม่ Project > add new item > SQL Server Database ตั้งชื่อฐานข้อมูลเป็น Company.mdf สร้างตารางโดยไปที่ Database explorer > table > add new table กำหนดให้สร้างตาราง Group เก็บข้อมูลประเภทของผู้ใช้งาน และตาราง User เก็บข้อมูลผู้ใช้งาน

ตาราง Group ตาราง User

ตาราง Group ตาราง User

Database diagram สร้าง Database diagram เพื่อสร้างความสัมพันธ์ระหว่างตาราง โดยคลิ๊กที่ Database diagram > add new diagram

สร้างคลาส dbcon (แบบ static) เพื่อเชื่อมต่อฐานข้อมูล public static class dbcon { public static SqlConnection conn = null; private static string constr = @"Data 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() {

สร้างหน้าสมัครสมาชิก 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);

สร้างฟอร์มสำหรับกรอกข้อมูลผู้ใช้งาน

เขียนคำสั่งให้ดึงข้อมูลฟิลด์ 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(); }

เรียกใช้เมธอด select_group จาก Page_Load protected void Page_Load(object sender, EventArgs e) { if (Page.IsPostBack == false) //คือเปิดเพจมาครั้งแรก select_group(); } ** property IsPostBack จะเป็น true ก็ต่อเมื่อเพจนั้นถูกเปิดมาแล้วเป็นครั้งที่ 2 ขึ้น ไป (เช่นผู้ใช้กด refresh หรือมี event อื่นเกิดขึ้นในหน้านั้นแล้ว)

ก่อนจะ 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;

เมื่อกดปุ่ม 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 นี้ถูกใช้แล้ว";

แบบฝึกหัด สร้างหน้า Default.aspx ปุ่ม register ให้ลิ้งค์ไปหน้า Register.aspx ปุ่ม login เมื่อผู้ใช้กรอก username และ password แล้วให้ไปตรวจสอบว่าข้อมูลทั้งสอง ตรงกับในฐานข้อมูลหรือไม่ ถ้าตรงกัน ก็ให้เข้าสู่ระบบได้แล้วลิ้งค์ไปหน้าใหม่ก็ได้(สร้างมาเพิ่มเติม) ถ้าไม่ตรงกัน ก็แจ้งเตือนว่าให้ตรวจสอบ username, password อีกครั้งผ่าน label เพิ่มเติม: ถ้าสามารถแยกความแตกต่างของกลุ่มผู้ใช้ได้จะได้คะแนนเพิ่ม เช่น username: ton อยู่ groupID ที่ 2 คือเป็น employee ก็ให้ลิ้งค์มาหน้า employee username: tea อยู่ groupID ที่ 4 คือเป็น manager ก็ให้ลิ้งค์มาหน้า manager