• Thứ Năm, 24/04/2008 11:26 (GMT+7)

    Kết nối CSDL trực tiếp, không dùng control?

    Câu hỏi :
    Xin hỏi trong ASP làm sao thể hiện được một thông tin có từ CSDL (lấy ra) nhưng không dùng datagrid, textbox... ?
      

    Trả lời :

    Trong trang ASP, để hiển thị thông tin truy xuất được từ database dễ dàng và nhanh chóng, bạn nên dùng các đối tượng có sẵn như datagrid, textbox, listbox... Tuy nhiên nếu bạn muốn hiển thị thông tin ở 1 định dạng đặc biệt nào đó, bạn có thể viết đoạn code ASP để truy xuất thông tin trên database thông qua các đối tượng ADO, rồi xuất thông tin ở dạng những tag lệnh HTML. 

    Thí dụ ta có 1 file database "c:\data\Mydatabase.mdb" có chứa 1 bảng tên là "testdb", bảng này gồm nhiều record thông tin, mỗi record có ít nhất 3 field hoten, namsinh, diachi. Trang ASP có mã nguồn sau đây sẽ hiển thị các record trong bảng "testdb" lên trang web theo định dạng văn bản thô, mỗi hàng chứa thông tin về 1 record dữ liệu:
     
     <html>
     <head>
     </head>
     <body>
     <h3>Kết quả truy xuất bảng testdb trên file MyDatabase.mdb ở dạng liệt kê : </h3>
     <%
     'tạo chuỗi miêu tả Connection thông qua DSN như sau
     'strConnectionString = "DSN=MyDatabase"
     'hay thông qua Provider như sau
     strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Data\MyDatabase.mdb"
     'Tạo đối tượng Connection quản lý database.
     Set cnn = Server.CreateObject("ADODB.Connection")
     cnn.Open strConnectionString
     
     'Tạo đối tượng Recordset
     Set rst = Server.CreateObject("ADODB.Recordset")
     'Mở recordset chứa các record của bảng testdb.
     strSQL = "SELECT * FROM testdb"
     rst.Open strSQL, cnn
     
     'thiết lập chỉ số bắt đầu
     i = 1
     'Duyệt từng record và xuất ra vị trí hiện hành của trang Web hiện hành.
     Do Until rst.EOF
     'tìm nội dung các field của record hiện hành
     Set hoten = rst("hoten")
     Set diachi = rst("diachi")
     Set namsinh = rst("namsinh")
     'xuất ra trang Web
     Response.Write "Record " & i & " : " & hoten & ", " & namsinh & ", " & diachi & "<BR>"
     'dời đến record kế tiếp
     rst.MoveNext
     'tăng chỉ số record lên 1
     i = i+1
     Loop
     %>
     </body>
     </html>
     Nếu muốn hiển thị các record trong bảng "testdb" lên trang web theo định dạng bảng dùng tag HTML <table>, bạn có thể dùng mã nguồn trang ASP như sau:
     <HTML>
     <HEAD>
     </head>
     <body>
     <h3>Kết quả truy xuất bảng testdb trên database MyDatabase ở dạng bảng : </h3>
     <%
     'tạo chuỗi miêu tả Connection thông qua DSN như sau
     'strConnectionString = "DSN=MyDatabase"
     'hay thông qua Provider như sau
     strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Data\MyDatabase.mdb"
     'Tạo đối tượng Connection quản lý database.
     Set cnn = Server.CreateObject("ADODB.Connection")
     cnn.Open strConnectionString
     
     'Tạo đối tượng Recordset
     Set rst = Server.CreateObject("ADODB.Recordset")
     'Mở recordset chứa các record của bảng testdb.
     strSQL = "SELECT * FROM testdb"
     rst.Open strSQL, cnn
     
     'thiết lập chỉ số bắt đầu
     i = 1
     if not rst.EOF then
     'nếu có dữ liệu thì hiển thị tag HTML miêu tả header của bảng
     Response.Write "<table border=1>"
     Response.Write "<tr><th>So thu tu</th><th>Ho ten</th><th>Nam sinh</th><th>Diachi</th></tr>"
     'duyệt từng record và xuất ra vị trí hiện hành của trang Web hiện hành.
     Do Until rst.EOF
     'tìm nội dung các field của record hiện hành
     Set hoten = rst("hoten")
     Set diachi = rst("diachi")
     Set namsinh = rst("namsinh")
     'xuất ra trang Web dùng tag <tr>
     Response.Write "<tr><td>" & i & "</td><td>" & hoten & "</td><td>" & namsinh & "</td><td>" & diachi & "</td></tr>"
     'dời đến record kế tiếp
     rst.MoveNext
     'tăng chỉ số record lên 1
     i = i+1
     Loop
     'tạo tag đóng table
     Response.Write "</table>"
     end if
     %>
     </body>
     </HTML>

    Chuyên mục: Lập trình