Read a Web Page in C#

Reading the contents of a web page is easy in C# with the System.Net.WebClient class:

using System.Net;
using System.Windows.Forms;

string url = "http://www.devtopics.com";
string result = null;

try
{
    WebClient client = new WebClient();
    result = client.DownloadString( url );
}
catch (Exception ex)
{
    // handle error
    MessageBox.Show( ex.Message );
}



The web page is read into the 'result' string. Note the URL you pass to the DownloadString method must have the http:// prefix, otherwise it will throw a WebException.

A more complicated but also more flexible solution is to use the System.Net.HttpWebRequest class, which enables you to interact directly with servers using HTTP:

using System.Net;
using System.IO;
using System.Windows.Forms;

string result = null;
string url = "http://www.devtopics.com";
WebResponse response = null;
StreamReader reader = null;

try
{
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create( url );
    request.Method = "GET";
    response = request.GetResponse();
    reader = new StreamReader( response.GetResponseStream(), Encoding.UTF8 );
    result = reader.ReadToEnd();
}
catch (Exception ex)
{
    // handle error
    MessageBox.Show( ex.Message );
}
finally
{
    if (reader != null)
        reader.Close();
    if (response != null)
        response.Close();
}

 

Phân tích yêu cầu thiết kế một website tin tức

Bài này mình muốn đưa ra việc phân tích yêu cầu xây dựng một website tin tức bao gồm các chức năng dưới đây

Các chức năng trong phần quản trị của website. (Tùy từng user được phân quyền mà có các chức năng cụ thể khác nhau)
Quản lý các chuyên mục
- Quản lý chuyên mục đa cấp
- Có thể thêm mới, sửa xóa các chuyên mục
- Sắp đặt chuyên mục: Có thể quản lý hiển thị của các chuyên mục trên trang chủ. Thường được chia làm các phần head menu, left menu, right menu. Khi quản trị cho phép những chuyên mục nào hiển thị trên menu tương ứng
 
Quản lý người dùng
- Quản lý người dùng, phân quyền cho các UserName
- Có thể thêm mới, sửa xóa các UserName

Quản lý các banner
- Có thể thêm mới, cập nhật, xóa các banner
- Có thể cài đặt các quảng cáo hiển thị ở các bị trí trên trang chủ của website

Quản lý và thiết đặt câu hỏi cho phần Vote (Bình chọn)

- Tạo câu hỏi mới, Offline câu hỏi đang dùng
- Thêm, sửa các câu trả lời của câu hỏi

Quản lý các thành viên.
- Thêm mới thành viên
- Khóa user của thành viên nến thấy có vi phạm
- Thay đổi các thông tin của thành viên

Thiết lập các thông số của website như Title, Mailserver, MaiContact… (Các thông số này sẽ được lưu ở file xml)

Quản lý bài viết

- Nếu có quyền viết bài: : Nếu UserName này chỉ có quyền viết bài thì chỉ có thể viết bài và các bài viết của người này là ở trạng thái chờ duyệt. Có thể sửa, xóa bài viết khi chưa được duyệt hoặc đăng
- Duyệt bài: Có thể thêm, sửa, xóa hoặc duyệt bài chờ đăng.
- Đăng bài: Có thể thêm, sửa, xóa các bài viết, đăng các bài đang chờ duyệt hoặc chờ đăng
* Các bài viết có trạng thái đã đang thì mới được hiển thị trên website

Phần giao diện
- Có chức năng thống kê website. Thống kế số người đang xem, số lượt truy cập
- Có chức năng tìm kiếm bài viết
- Có chức năng Vote (Bình chọn)
- Hiển thị các chuyên mục được chọn dạng menu
- Tạo chức năng đăng ký và quản lý thành viên
- - Cho phép người dùng đăng ký thành viên và gửi ý kiến phản hồi về bài viết sau khi đã đăng nhập

Thiết kế cơ sở dữ liệu
Các bảng chính

Ngoài ra còn các bảng phụ như bảng

Thống kê website TB_ Statistics

Các website liên kết: TB_Website

Phần bình chọn:
TB_ Poll
TB_ PollChoices
TB_ PollIPs

Video hướng dẫn tạo cơ sở dữ liệu

 [vimeo:15615811]

Tạo các kiểu dữ liệu do người dùng định nghĩa trong mssql

Trong SQL server đã định nghĩa sẵn cho bạn các kiểu dữ liệu. Nhưng SQL cũng có chế độ mở để cho phép người dùng tự định nghĩa kiểu dữ liệu riêng của bạn.
SQL server, kiểu dữ liệu, người dùng, định nghĩa,

Khi bạn đã tạo một kiểu dữ liệu do bạn tự định nghĩa bạn có thể sử dụng nó trong cơ sở dữ liệu của bạn như các liểu dữ liệu mà SQL System đã định nghĩa.

Để tạo kiểu dữ liệu tự định nghĩa bạn phải sử dụng các kiều dữ liệu do hệ thống cung cấp. Ví dụ bạn có thể tạo một loại dữ liệu là KhoaChinh và định nghĩa nó như varchar hoặc Int nhưng không thể định nghĩa nó như một loại dữ liệu không tồn tại. Một điều nữa là bạn cần phải định nghĩa kiểu dữ liệu của bạn trước khi bạn sử dụng nó.

Để định nghĩa bằng lệnh SQL bạn sử dụng sp_addType

Lấy minh họa là bạn muốn tạo kiểu dữ liệu là KhoaChinh để khi sử dụng trường nào đó là Prymary Key sẽ luôn là varchar và Length là 50 như ví dụ sau:

Exec sp_addtype 'KhoaChinh', 'varchar(50)', 'Not null'

Khi chạy xong lệnh này giờ bạn đã chính thức có kiểu dữ liệu là KhoaChinh và bạn sử dụng nó như các kiểu dữ liệu khác như ví dụ sau:
Create Table TB_DBType
(
    TestCode KhoaChinh Primary Key,
    TestName nvarchar(100),
    OrderID int
)
Bạn thấy trong lệnh tạo Bảng TB_DBType ở trên tôi có tạo trường TestCode là khóa chính và kiểu dữ liệu là KhoaChinh do tôi đã định nghĩa là varchar(50) mà không phải một kiểu dữ liệu hệ thống của SQL server . Đó là ví dụ đơn giản để bạn biết về kiểu dữ liệu do người dùng định nghĩa. Qua đó bạn có thể tự định nghĩa cho mình các kiểu dữ liệu mà bạn mong muốn

Để xóa các kiểu dữ liệu do người dùng định nghĩa bạn sùng lệnh sp_dropType nhưng bạn cần chú ý là kiểu dữ liệu đang muốn xóa này chưa được sử dụng trong cơ sở dữ liệu của bạn
Ví dụ để xóa Kiểu dữ liệu KhoaChinh ở trên bạn dùng lệnh:
exec sp_droptype 'KhoaChinh'
Về lý thuyết thì bạn có thể định nghĩa kiểu dữ liệu riêng của bạn để sử dụng cho tất cả các Database có trong hệ quản trị CSDL của bạn bằng việc tạo nó trong cơ sở dữ liệu model của hệ thống, nhưng tôi khuyến cáo bạn nếu có định nghĩa thì nên định nghĩa trong nội cơ sở dữ liệu bạn đang thao tác thôi nếu không khi triển khai bạn sẽ gặp phải những lỗi không mong muốn. đó là bạn lại phải định nghĩa kiểu dữ liệu đó trên Database server nơi bạn triển khai, Nếu bạn lại không có quyền quản trị cao nhất thì lúc đó không triển khai ứng dụng của bạn được

Bài viết này có tính chất tham khảo, Bạn có hứng thú có thể tự định nghĩa cho bạn kiểu dữ liệu riêng nhé