Lưu và truy suất dữ liệu tiếng Việt trong ASP.NET

Thảo luận trong 'Lập trình web (PHP, ASP, ASPX, JSP ...)' bắt đầu bởi Gardener, 9/6/13.

Loading...
  1. Gardener

    Gardener Admin

    1. Lập trình web trên nền ASP .NET dùng cơ sở dữ liệu SQL Server, khi nhập dữ liệu tiếng Việt có dấu vào cơ sở dữ liệu thì bị mã hóa. Xin hướng dẫn cách load dữ liệu lên trang web hiển thị đúng tiếng Việt có dấu.
    2. Xin cho một ví dụ dùng ASP .Net kết nối database SQL Server 2005 Express để lấy data viết bằng VB .Net mà không sử dụng đối tượng Datagrid hay Dataset, đơn thuần lấy dữ liệu và in ra.
    Trả lời :

    Để truy xuất database được quản lý bằng SQL Server (bất kỳ version nào) trong trang ASP .Net, bạn có thể dùng các đối tượng SQL trong Package System.Data.SqlClient. Các đối tượng này có tên là sqlConnection, sqlCommand, sqlDataReader,…
    Sau đây là qui trình điển hình để xây dựng trang ASP .Net tra danh bạ điện thoại:
    1. Bạn chạy tiện ích quản lý database SQL Server, tạo mới database có tên là mydatabase, trong database này bạn tạo 1 bảng dữ liệu có tên là danhbadienthoai, mỗi record gồm 3 field thông tin: tenthuebao, sodienthoai, diachi đều thuộc kiểu dữ liệu ntext (chuỗi Unicode). Thử thêm một số record dữ liệu chứa nội dung chuỗi tiếngViệt Unicode theo nhu cầu vào bảng danhbadienthoai.
    2. Chạy Microsoft Visual Studio 200x, chọn chức năng Create.Web site để tạo 1 Project quản lý website mới. Khi cửa sổ New Web Site hiển thị, bạn chọn icon ASP .Net Website, nhập vào đường dẫn chứa Website, chọn ngôn ngữ lập trình là VB .Net.
    3. Khi trang ASP mặc định có tên là Default.aspx hiển thị (hoàn toàn trống), bạn hãy thiết kế nội dung trang web như hình:
    Hãy đặt tên cho 3 textbox lần lượt là txtTenthuebao, txtSodthoai, txtDiachi, tên cho button là btnSearch.
    4. Ấn kép chuột vào button “Bắt đầu tra” để tạo thủ tục xử lý Click chuột trên button này rồi viết đoạn code VB .Net tra danh bạ điện thoại trên database do SQL Server Express quản lý:

    Mã:
    'thêm lệnh Imports sau vào đầu file để sử dụng các đối tượng SqlClient
    Imports System.Data.SqlClient
     
    'thủ tục xử lý Click chuột trên button
    Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.Click
    'khai báo các biến cần dùng
    Dim fsqlstart As Integer
    Dim tentbao As String
    Dim sodthoai As String
    Dim diachi As String
    Dim newSQL As String
    fsqlstart = 1
    'xác định các chuỗi thông tin nhập
    tentbao = Request.Form("txtTenthuebao")
    sodthoai = Request.Form("txtSodthoai")
    diachi = Request.Form("txtDiachi")
    'xây dựng lệnh SQL tìm các thuê bao
    newSQL = "SELECT * FROM danhbadienthoai"
    If tentbao <> "" Then
    newSQL = newSQL + " where tenthuebao like N'%" + tentbao + "%'"
    fsqlstart = 0
    End If
    If sodthoai <> "" Then
    If fsqlstart = 1 Then
    newSQL = newSQL + " where sodienthoai like N'%" + sodthoai + "%'"
    Else
    newSQL = newSQL + " and sodtienhoai like N'%" + sodthoai + "%'"
    End If
    fsqlstart = 0
    End If
    If diachi <> "" Then
    If fsqlstart = 1 Then
    newSQL = newSQL + " where diachi like N'%" + diachi + "%'"
    Else
    newSQL = newSQL + " and diachi like N'%" + diachi + "%'"
    End If
    fsqlstart = 0
    End If
    'tạo cầu nối tới database cần truy xuất
    Dim myConnection As New SqlConnection("server=HIEPCOMPSQLEXPRESS;user id=sa; pwd=luonghoa; database=mydatabase;")
    myConnection.Open()
    'tạo đối tượng Command thực hiện truy vấn
    Dim myCommand As New SqlCommand(newSQL, myConnection)
    Dim myReader As SqlDataReader
    myReader = myCommand.ExecuteReader()
    Response.Write("<h2>Kết quả tra danh bạ điện thoại của bạn :</h2>")
    'kiểm tra xem có tìm được thuê bao
    If myReader.Read() Then
    'nếu có thì tạo bảng hiển thị
    Dim nItem As Integer = 1
    Response.Write("<table border=1>" & vbCrLf)
    Response.Write("<tr><th>Số thứ tự</th><th>Tên thuê bao</th><th>Số điện thoại</th><th>Địa chỉ</th></tr>" & vbCrLf)
    tentbao = myReader.GetString(0)
    sodthoai = myReader.GetString(1)
    diachi = myReader.GetString(2)
    'xuất hàng thông tin về thuê bao đầu tiên
    Response.Write("<tr><td>" & nItem & "</td><td>" & tentbao & "</td><td>" & sodthoai & "</td><td>" & diachi & "</td></tr>" & vbCrLf)
    nItem = nItem + 1
    'lặp đọc từng record còn lại và hiển thị
    While myReader.Read()
    tentbao = myReader.GetString(0)
    sodthoai = myReader.GetString(1)
    diachi = myReader.GetString(2)
    Response.Write("<tr><td>" & nItem & "</td><td>" & tentbao & "</td><td>" & sodthoai & "</td><td>" & diachi & "</td></tr>" & vbCrLf)
    nItem = nItem + 1
    End While
    'xuất lệnh kết thúc bảng
    Response.Write("</table>" & vbCrLf)
    Else
    'nếu không có thì báo lỗi
    Response.Write("<P>Không tìm được thuê bao thỏa yêu cầu của bạn!</P>")
    End If
    'đóng các đối tượng đã dùng
    myReader.Close()
    myConnection.Close()
    End Sub
    5. Chạy thử trang ASP .Net, nhập thử một số thông tin mà bạn cần tìm vào các textbox tương ứng (thí dụ muốn tìm các thuê bao có tên chứa chuỗi “Nguyễn”, bạn nhập chuỗi “Nguyễn” vào textbox TxtTenthuebao) rồi click button “Bắt đầu tra”. Thủ tục xử lý btnSearch_Click sẽ chạy, nó sẽ truy xuất database, tìm các thuê bao thỏa mãn điều kiện tìm kiếm của bạn và hiển thị bảng kết quả lên trang ASP .Net của bạn.
    Lưu ý, để SQL Server xử lý đúng chuỗi Unicode trong các lệnh truy vấn SQL, bạn nên dùng cú pháp N’chuỗi’ để miêu tả chuỗi Unicode.
    Theo pcworld
    Loading...
    Hồng Hương thích bài này.

Chia sẻ trang này