โดยปกติการดึงข้อมูลจากฐานข้อมูล จะต้องกำหนดชื่อ Field ที่ต้องการเป็น Property ให้กับ DataRow Object เช่น row["Name"] ซึ่งการเรียกใช้แบบนี้เป็น Non-Typed DataTable
หากต้องการเรียกใช้แบบนี้ row.Name เราจะต้องทำ DataTable ที่เป็น Strongly Typed แบบเฉพาะเจาะจงขึ้นมาเอง
การสร้าง Strongly Typed DataSet นี้ไม่ยากเลยครับ มีขั้นตอนเพิ่มเติมไม่มาก แต่เราจะได้ประโยชน์ในการเขียนโค้ด และการแก้ไขโค้ดได้อย่างมาก
1. เริ่มจากเปิด Visual Studio Web Developer Express 2014
2. New Project -> Visual C# -> Web -> ASP.NET Web Application
Name : StronglyDataTable
3. เปิด Database Explore
Connect เข้า localhost\sqlexpress
สร้าง Database = StronglyDataTable
แล้วสร้าง Table "MyTable"
เพิ่ม record ลงไปใน MyTable สัก 2 records
4. สร้าง Folder ชื่อ DataSet
จากนั้น Add New Item -> DataSet ชื่อ "StronglyDataTableDS"
สร้าง DataTable ชื่อ "MyTable"
5. Add Class ชื่อ "DataAccess.cs" โดยมีโค้ดตามตารางด้านล่าง
using System; using System.Collections.Generic; using System.Linq; using System.Web; using StronglyDataTable.DataSet; using System.Data.SqlClient; namespace StronglyDataTable { public class DataAccess { public MyDataSet.MyTableDataTable GetMyTable() { string connectionString = System.Web.Configuration.WebConfigurationManager .ConnectionStrings["StronglyDataTableConnectionString"].ToString(); SqlConnection sqlConnection = new SqlConnection(connectionString); SqlCommand sqlCommand = new SqlCommand("SELECT * FROM MyTable", sqlConnection); SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sqlCommand); System.Data.DataTable table = new System.Data.DataTable(); sqlDataAdapter.Fill(table); MyDataSet.MyTableDataTable myTable = new MyDataSet.MyTableDataTable(); myTable.Merge(table); return myTable; } } }
6. เปิด Default.aspx แล้ววาง Label ชื่อ LabelMyTable
7. เปิดโค้ดของ Default.aspx.cs จากนั้นโค้ดใน event Page_Load ตามตาราง
** สังเกตุได้ว่า การใช้ Strongly Typed DataTable จะช่วยให้การเขียนโค้ดอ่านเข้าใจง่าย และช่วยลดปัญหาการเกิด Runtime Error ลงไปอย่างมาก **
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace StronglyDataTable { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { DataAccess da = new DataAccess(); StronglyDataTable.DataSet.MyDataSet.MyTableDataTable table = da.GetMyTable(); foreach (StronglyDataTable.DataSet.MyDataSet.MyTableRow row in table.Rows) { LabelMyTable.Text += string.Format(" Id: {0}, Name: {1}", row.Id.ToString(), row.Name); } } } } }
8. ทดลองรันดูจะได้ผลลัพท์ ตามรูปด้านล่าง
หากติดขัดอะไร สอบถามผ่าน blog นี้ได้เลยครับ
No comments:
Post a Comment