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
- 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
- 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
- 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
- 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