Thursday, February 2, 2012

Lesson 02: Optimization data access

Lesson 02: Optimization data access

Exercise 1: Xem lại cách sử dụng ADO

Tạo mới trang ReviewADO.aspx
Thêm GridView control,button và literal

Khai báo code với tên GetDataTable() trả ra DataTable
SqlConnection sqlConnection = null;
    SqlCommand sqlCommand = null;
    SqlDataAdapter sqlDataAdapter = null;
    public DataTable GetDataTable()
    {
        string connectionString = "server=(local);database=StudentManagementForProfessional;integrated security=true";
        DataTable dataTable = new DataTable();
        using (sqlConnection = new SqlConnection(connectionString))
        {
            sqlConnection.Open();
            string commandText = "select StudentId, FirstName, LastName from Students";
            sqlCommand = new SqlCommand(commandText, sqlConnection);
            sqlCommand.CommandType = CommandType.Text;
            sqlDataAdapter = new SqlDataAdapter(sqlCommand);
            sqlDataAdapter.Fill(dataTable);
        }
        return dataTable;
    }
Viết code trong sự kiện click của button gọi đến method GetDataTable() để hiển thị dữ liệu lên GridView
protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
            grvData.DataSource = GetDataTable();
            grvData.DataBind();
        }
        catch (Exception ex)
        {
            Literal1.Text = ex.Message;
        }
    }

Exercise 2 :cơ bản vế đối tượng Cache
  • Thêm mới 1 trang simplesearch.aspx
  • Thêm GridView,Button và Literal
         
              
  • Khai báo method tên GetDataTable sau đó trả ra đối tượng DataTable dựa trên câu lệnh SQL hay Procedure của bạn
   using System.Data.SqlClient;
using System.Data;
    SqlConnection sqlConnection = null;
    SqlCommand sqlCommand = null;
    SqlDataAdapter sqlDataAdapter = null;
    public DataTable GetDataTable(string commandText)
    {
string connectionString = "server=(local);database=StudentManagementForProfessional;integrated security=true";
        DataTable dataTable = new DataTable();
        using (sqlConnection = new SqlConnection(connectionString))
        {
            sqlConnection.Open();
            sqlCommand = new SqlCommand(commandText, sqlConnection);
            sqlCommand.CommandType = CommandType.Text;
            sqlDataAdapter = new SqlDataAdapter(sqlCommand);
            sqlDataAdapter.Fill(dataTable);
        }
        return dataTable;
 }
  • Khai báo method tên FillData
    1. Nếu Cache với tên là AHN mà chưa được tạo sẵn
*.Bạn có thể gọi method GetDataTable và lấy đối tượng DataTable đã được trả ra ở method GetDataTable sau đó đổ dữ liệu vào GridView
*.Gán dataTable cho Cache với tên là AHN
*.Hiển thị tin nhắn “Read Students from Database” lên Literal
    1. Trong trường hợp Cache với tên là AHN mà được tạo sẵn
*.Bạn có thể lấy dataTable từ Cache với tên là AHN sau đó đổ dữ liệu vào GridView
*.Hiển thị tin nhắn “Read Students from Cache” lên Literal
  private void FillData()
    {
        try
        {
            DataTable dataTable = null;
            if (Cache["AHN"] == null)
            {
dataTable = GetDataTable("select StudentId, FirstName, LastName from Students");
                  Cache["AHN"] = dataTable;
                  Literal1.Text = "Read Students from Database";
            }
            else
            {
                dataTable = (DataTable)Cache["AHN"];
                Literal1.Text = "Read Students from Cache";
            }
            grvData.DataSource = dataTable;
            grvData.DataBind();
        }
        catch (Exception ex)
        {
            Literal1.Text = ex.Message;
        }
   }
  • Gọi method FillData vào sự kiện click của button1
protected void Button1_Click(object sender, EventArgs e)
    {
        FillData();
    }
  • Chạy ứng dụng và click trên button
Lần đầu kiểm tra thong điệp  hiển thị trên Literal là nhắn “Read Students from Database
Lần thứ 2 kiểm tra thong điệp  hiển thị trên Literal là nhắn “Read Students from Cache
Lần thứ 2 kiểm tra thong điệp  hiển thị trên Literal là nhắn “Read Students from Cache 
  • Viết sự kiện cho nút reset để đọc mới từ database lên
if (Cache["Asia"]!=null)
{
               Cache.Remove("Asia");
         }
Exercise 3 :hiểu biết hơn vế đối tượng Cache
  • Thêm mới 1 trang advancedsearch.aspx
  • Thêm GridView,Button và Literal
          
          
  • Khai báo method tên GetDataTable sau đó trả ra đối tượng DataTable dựa trên câu lệnh SQL hay Procedure của bạn
    SqlConnection sqlConnection = null;
    SqlCommand sqlCommand = null;
    SqlDataAdapter sqlDataAdapter = null;
    public DataTable GetDataTable()
    {
        string connectionString = "server=(local);database=StudentManagementForProfessional;integrated security=true";
        DataTable dataTable = new DataTable();
        using (sqlConnection = new SqlConnection(connectionString))
        {
            sqlConnection.Open();
            string commandText = "select StudentId, FirstName, LastName from Students";
            sqlCommand = new SqlCommand(commandText, sqlConnection);
            sqlCommand.CommandType = CommandType.Text;
            sqlDataAdapter = new SqlDataAdapter(sqlCommand);
            sqlDataAdapter.Fill(dataTable);
        }
        return dataTable;
    }

  • Khai báo method tên FillData
    1. Nếu Cache với tên là Asia mà chưa được tạo sẵn
*.Bạn có thể gọi method GetDataTable và lấy đối tượng DataTable đã được trả ra ở method GetDataTable sau đó đổ dữ liệu vào GridView
*.Gán dataTable cho Cache với tên là Asia bởi dependency
     TimeSpan object: 1 giờ
     NoAbsoluteExpiration
     CacheItemPriority.Default
     Hung.txt trong C:\(tạo trước)
*.Hiển thị tin nhắn “Read Students from Database” lên Literal
    1. Trong trường hợp Cache với tên là Asia mà được tạo sẵn
*.Bạn có thể lấy dataTable từ Cache với tên là Asia sau đó đổ dữ liệu vào GridView
*.Hiển thị tin nhắn “Read Students from Cache” lên Literal
private void FillData()
    {
        DataTable dataTable = null;
        if (Cache["Asia"] == null)
        {
            System.Web.Caching.CacheDependency dependency = new System.Web.Caching.CacheDependency("C:\\hung.txt");
            dataTable = GetDataTable();
            TimeSpan timeSpan = new TimeSpan(2, 0, 0);
            Cache.Add("Asia", dataTable, dependency, System.Web.Caching.Cache.NoAbsoluteExpiration, timeSpan, System.Web.Caching.CacheItemPriority.Default, null);
            Literal1.Text = "Read Students from Database";
        }
        else
        {
            dataTable = (DataTable)Cache["Asia"];
            dataTable = GetDataTable();
            Literal1.Text = "Read Students from Cache";
        }
        grvData.DataSource = dataTable;
        grvData.DataBind();
    }
  • Chạy ứng dụng và click trên button
Lần đầu kiểm tra thong điệp  hiển thị trên Literal là nhắn “Read Students from Database
Lần thứ 2 kiểm tra thong điệp  hiển thị trên Literal là nhắn “Read Students from Cache
Lần thứ 2 kiểm tra thong điệp  hiển thị trên Literal là nhắn “Read Students from Cache
  • Đã có file hung.txt trong đĩa C:/ và thay đổi nội dung
Lần thứ tư  kiểm tra thong điệp  hiển thị trên Literal là nhắn “Read Students from Database
  • Viết sự kiện cho nút reset để đọc mới từ database lên
if (Cache["Asia"]!=null)
{
               Cache.Remove("Asia");
         }
Execise 4: hiểu về cách sử dụng từ khóa phổ biến và gán cho keyworld những giá trị sau đó lưu vào Cache


  • Thêm mới 1 trang searchresult.aspx
  • Thêm GridView,TextBox,Button và Literal
           
           
  • Khai báo method GetDataTable và FillData từ advancedsearch.aspx
  • Khai báo phương thức và khởi tạo keyword(ở đây dùng 1 keyword các bạn tự thêm vào cho đủ 5 keyword hoặc nhiều hơn.Có thể dùng mảng keyword)
    • Khai báo biến local và tên là keyword,mặc định là 5 keyword(hơn nữa thì do bạn định nghĩa)
    • Sử dụng câu lệnh để lấy mỗi keyword trong những biến keyword
      • Gọi phương thức GetDataTable với keyword
      • Gán dataTable vào Cache với keyword hiện hành là SQL
   protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            InitiateKeyWord();
        }
    }

    private void InitiateKeyWord()
    {
        DataTable dataTable = null;
        string keyWord = "SQL";
        if (Cache[keyWord] == null)
        {
            dataTable = GetDataTable();
            Cache[keyWord] = dataTable;
            Literal1.Text = "Read Students from Database";
        }
        else
        {
            dataTable = (DataTable)Cache[keyWord];
            Literal1.Text = "Read Students from Cache";
        }
        grvData.DataSource = dataTable;
        grvData.DataBind();
    }
    SqlConnection sqlConnection = null;
    SqlCommand sqlCommand = null;
    SqlDataAdapter sqlDataAdapter = null;

    public DataTable GetDataTable()
    {
        string connectionString = "server=(local);database=StudentManagementForProfessional;integrated security=true";
        DataTable dataTable = new DataTable();
        using (sqlConnection = new SqlConnection(connectionString))
        {
            sqlConnection.Open();
            string commandText = "select StudentId, FirstName, LastName from Students";
            sqlCommand = new SqlCommand(commandText, sqlConnection);
            sqlCommand.CommandType = CommandType.Text;
            sqlDataAdapter = new SqlDataAdapter(sqlCommand);
            sqlDataAdapter.Fill(dataTable);
        }
        return dataTable;
    }
  • khai báo code trong sự kiện click của button
    • Lấy keyword từ TextBox và kiểm tra giá trị này trong biến keyword
      • Nếu nó đã có sẵn,bạn có thể lấy dữ liệu từ Cache
      • Ngược lại, bạn có thể lấy dữ liệu từ DataBase
private void FillData()
    {
        DataTable dataTable = null;
        if (Cache[TextBox1.Text] == null)
        {
            dataTable = GetDataTable();
            Cache[TextBox1.Text] = dataTable;
            Literal1.Text = "Read Students from Database";
        }
        else
        {
            dataTable = (DataTable)Cache[TextBox1.Text];
            Literal1.Text = "Read Students from Cache";
        }
        grvData.DataSource = dataTable;
        grvData.DataBind();
    }
protected void btnShow_Click(object sender, EventArgs e)
    {
        FillData();
    }

  • Chạy ứng dụng,nhập bất kỳ keyword trên TextBox và click trên button

0 comments:

Post a Comment