
โดยปกติการดึงข้อมูลจากฐานข้อมูล จะต้องกำหนดชื่อ 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