Friday, August 26, 2016
Create Windows Service and Send Mail Daily At Fixed Time Using C#
0 comments Posted by Duc Nguyen at 12:01 AMIntroduction
In this article I am explaining how
to create a Windows Service to schedule daily mail at a specified time.
Scheduling email and sending the email is a basic requirement of any
project.
Step 1
Open Visual Studio and
create a new project. Under Windows Desktop select Windows Service and
provide a proper name and click on the OK button.
More link...
Monday, August 15, 2016
1. Query tìm kiếm trong SQL
- Bản chất của việc tìm kiếm là việc chúng ta sẽ lập trình để thực thi một câu lệnh SQL với keyword được nhập từ người dùng, cấu trúc lệnh SQL cho việc tìm kiếm trong ví dụ này như dưới đây. Trong trường hợp này mình cho phép tìm từ khóa trong cả tiêu đề "Title" và nội dung "Content"
1
2
| select * from [Articles] where ([Title] like '%keyword%' or [Content] like '%keyword%' ) |
1
2
| select * from [Articles] where ([Title] like N '%Võ Khánh Thụy%' or [Content] like N '%Võ Khánh Thụy%' ) |
1
2
3
4
| select * from [Articles] where ([Title] like N '%Võ%' or [Content] like N '%Võ%' ) and ([Title] like N '%Khánh%' or [Content] like N '%Khánh%' ) and ([Title] like N '%Thụy%' or [Content] like N '%Thụy%' ) |
2. Xử lý từ khóa người dùng nhập vào
- Với yêu cầu tìm kiếm mà người dùng nhập vào từ form tìm kiếm sẽ phải qua một số bước xử lý dữ liệu như loại bỏ các ký tự cấm trong SQL, xử lý tiếng việt không dấu...Tuy nhiên trong phần này mình chỉ muốn nói qua về cách tách chuỗi từ khóa được nhập vào để tăng kết quả tìm kiếm như mình đã đề cập ở trên. Mình sử dụng đoạn code dưới đây để tách chuỗi từ khóa người dùng nhập vào thành 1 mảng các từ khóa độc lập
1
2
| // Turn user input to a list of keywords. string [] keywords = txtKeyWord.Text.Split( new string [] { " " }, StringSplitOptions.RemoveEmptyEntries); |
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| /// /// Search records from database. /// |
/// the list of keywords
/// all found records
public
List Search(List<
string
> keywords)
{
// Generate a complex Sql command.
StringBuilder sqlBuilder =
new
StringBuilder();
sqlBuilder.Append(
"select * from [Articles] where "
);
foreach
(
string
item
in
keywords)
{
sqlBuilder.AppendFormat(
"([Title] like '%{0}%' or [Content] like '%{0}%') and "
, item);
}
// Remove unnecessary string " and " at the end of the command.
string
sql = sqlBuilder.ToString(0, sqlBuilder.Length - 5);
return
QueryList(sql);
}
///
/// Excute a Sql command.
///
/// Command text
protected
List QueryList(
string
cmdText)
{
List articles =
new
List();
SqlCommand cmd = GenerateSqlCommand(cmdText);
using
(cmd.Connection)
{
SqlDataReader reader = cmd.ExecuteReader();
// Transform records to a list.
if
(reader.HasRows)
{
while
(reader.Read())
{
articles.Add(ReadArticle(reader));
}
}
}
return
articles;
}
3. Hightlight Keyword
- Sau khi hoàn thành các bước ở phần 1 & 2, chúng ta đã có thể lấy được kết quả tìm kiếm trả về, và các bạn có thể bind dữ liệu vào repeate, listview hay datalist... thì tùy vào mục đích sử dụng. Phần này mình muốn nói thêm về cách đánh dấu từ khóa tìm kiếm trên danh sách kết quả tìm kiếm trả về trên giao diện người dùng.- Đầu tiên mình sẽ viết css cho phân hightlight keyword của mình
1
2
3
4
5
6
|
|
1
| keyword thay thế bằng |
1
2
3
4
5
6
7
8
9
| //hight light keyword foreach ( string keyItems in keyList) { foreach (Article items in _ls) { items.Title = items.Title.Replace(keyItems, "" + keyItems + " |
);
items.Content = items.Content.Replace(keyItems,
""
+ keyItems +
"
);
}
}
- Với cách làm trên mình thấy chạy khá ổn khi tìm kiếm với lượng dữ liêu vừa phải, tuy nhiên nếu xử lý với dữ liệu lớn sẽ không được tối ưu.
Subscribe to:
Posts (Atom)