text:
Chỉ sau 12 năm từ khi thành lập, thị trường chứng khoán Việt Nam đã có những bước tiến khổng lồ. So với cách đây 12 năm, quy mô thị trường hiện tăng trên 50 lần nhưng thời hoàng kim của TTCK tuy chưa xa mà dường như đã rất xưa.
Sự trưởng thành của TTCK được thể hiện sinh động qua nhiều con số, vốn hoá năm đầu tiên dưới 1% GDP, nhưng cuối năm 2011 đạt gần 27%. Khối lượng giao dịch cũng tăng 30- 40 lần so với năm đầu tiên giao dịch. Công ty niêm yết trong năm đầu tiên thị trường hoạt động chỉ hơn 10 doanh nghiệp, nay tăng lên gần 800 doanh nghiệp. Huy động vốn thực sự là điểm đáng chú ý hơn cả, với gần 700.000 tỷ đồng huy động cho nền kinh tế qua 12 năm, đỉnh cao là năm 2007 đạt 127.000 tỷ đồng. Luồng vốn đầu tư gián tiếp nước ngoài có thời điểm cao nhất lên đến 12 tỷ USD, nay khoảng 6,7 tỷ USD, góp phần cân bằng cán cân thanh toán, cũng như gia tăng sức hấp dẫn của môi trường đầu tư Việt Nam trong con mắt nhà đầu tư quốc tế. Các tổ chức kinh doanh chứng khoán đã có những bước phát triển về quy mô, mạng lưới công nghệ và trở thành một tổ chức trung gian phục vụ cho hoạt động tư vấn, cổ phần hóa kết nối cung cầu trên thị trường chứng khoán. Về số lượng tài khoản nhà đầu tư cũng ngày một gia tăng, khi mới có thị trường chứng khoán chỉ có khoảng 3.000 tài khoản, nhưng đến hiện nay đã có 1,2 triệu tài khoản. Đó là những con số thống kế, còn thực tế TTCK hiện nay ra sao?
Rơi xuống vực nhưng chưa tới đáy
Trên toàn thị trường hiện có tới gần 70% cổ phiếu được giao dịch dưới mệnh giá, nhiều cổ phiếu rẻ bằng một chén nước chè… nguội. Sàn giao dịch chứng khoán TP.HCM hiện có hơn 51 mã chứng khoán giao dịch có giá dưới 5.000 đồng/cổ phiếu, thậm chí có mã giá dưới 2.000 đồng/cổ phiếu. Sàn Hà Nội cũng không kém cạnh với la liệt cổ phiếu giao dịch dưới mệnh giá. Thị trường không thể bật dậy cho dù HNX-Index đang ở vùng thấp lịch sử, còn VN-Index cũng ở mức thấp nhất trong nhiều tháng qua. Điều đáng nói là tính thanh khoản trên thị trường tiếp tục đứng ở mức rất thấp và thực sự vẫn đang thử thách sự kiên nhẫn đã sắp cạn kiệt của nhà đầu tư. Gần như trong toàn bộ tháng 11/2012, giá trị giao dịch khớp lệnh cổ phiếu trên cả 2 sàn chứng khoán TP.HCM và Hà Nội đều quanh quẩn ở con số vài trăm tỷ, chưa bằng giá trị giao dịch của một cổ phiếu blue-chip hoặc một cổ phiếu đầu cơ thời sôi động. Ai cầm “cổ” muốn chuyển sang tiền đều buộc phải bán rẻ, thấp hơn giá tham chiếu. Dự báo diễn biến trên thực tế của cả hai chỉ số VN-Index, HNX-Index, giao dịch chung trên thị trường và biến động giá của các cổ phiếu không những không tích cực mà có chiều hướng đang xấu hơn nữa.
Rất nhiều nhà đầu tư tỏ ra mất niềm tin vào cổ phiếu. Đối với họ, TTCK đã thử thách sự kiên nhẫn của họ một cách thái quá. TTCK trải qua một thời kỳ “downtrend” kéo dài, quá dài. Một số nhà đầu tư mua vào bắt đáy chờ sự chuyển biến của thị trường nhưng sự khởi sắc đã không trở thành hiện thực. Những người cầm cổ phiếu từ tháng 8 đến cuối tháng 11 không những không có lãi, mà tài khoản của họ vẫn không ngừng co lại. Hệ lụy của sự eo hẹp của dòng tiền vào thị trường là sự mất kiên nhẫn của đại đa số các nhà đầu tư.
Câu hỏi ai cũng trả lời được
Không thể phủ nhận sự đi xuống của TTCK trong những năm gần đây phần nhiều là do hoạt động của các doanh nghiệp yếu kém và niềm tin đối với thị trường, với doanh nghiệp suy giảm. Nhưng khó khăn không chỉ xuất phát tự nội tại các doanh nghiệp, mà một phần không nhỏ đến từ sự khan hiếm, cạn kiệt của dòng tiền nói chung. Các dự báo gần đây đều cho thấy, nền kinh tế đã có những bước chuyển biến tích cực. Ngay trong năm khó khăn 2012, nền kinh tế vẫn có những điểm sáng (như lạm phát ổn định, tăng trưởng đang phục hồi trở lại, PMI tăng trở lại ấn tượng...) và dự báo cho 2013 cũng đã có nhiều điểm hồng, không chỉ còn là mầu xám. Hệ thống ngân hàng - mạch máu của nền kinh tế - cũng được đánh giá đã qua giai đoạn khó khăn nhất và thanh khoản cũng đang khá dồi dào, Ngân hàng Nhà nước đang liên tục hút ròng trên thị trường mở...
Trên thị trường, không ít nhà đầu tư chứng khoán tin tưởng dòng tiền sẽ sớm trở lại với chứng khoán sau hàng loạt các biện pháp giải cứu doanh nghiệp, giải cứu thị trường bất động sản (BĐS) như lãi suất giảm, đẩy mạnh tín dụng, giảm thuế, giãn thuế, tăng cường đầu tư công, bơm tiền cho người có nhu cầu mua nhà... Tuy nhiên, thực tế đã không diễn biến đúng như dự đoán và dự báo của nhiều người. TTCK đã không phản ứng tích cực với các thông tin tốt về lãi suất, về sự ổn định của đồng VND. Vấn đề nằm ở chỗ, với một nền kinh tế mà tồn kho hàng hóa lên tới vài chục tỷ USD (riêng BĐS cũng hơn chục tỷ USD), nợ xấu ngân hàng lên tới 10% dư nợ tín dụng, nhiều doanh nghiệp Nhà nước, tập đoàn đang vùng vẫy tìm cọc... thì ưu tiên đầu tiên có lẽ không phải dành cho chứng khoán.
Điều mà nhiều người nhận thấy là đó là vấn đề tiền cạn kiệt và hướng đi của dòng tiền không phải vào chứng khoán mà dường như tiền đang phải tập trung triệt để cho công cuộc tái cấu trúc nền kinh tế đang ở bước đầu. Thực tế, hàng loạt các tay chơi lớn trên thị trường là các ngân hàng, công ty chứng khoán, quỹ đầu tư, các doanh nghiệp Nhà nước, tập đoàn, tổng công ty vốn trước đây được coi là một trong những động lực thúc đẩy thị trường đi lên thì giờ đều đang vật lộn với những khó khăn như nợ xấu, tiền đầu tư dàn trải... Một khi doanh nghiệp chưa thể tự gỡ khó cho mình thì việc cầm tiền đầu tư vào các thị trường khác như chứng khoán, BĐS hay những chính sách hỗ trợ hướng dòng tiền vào chứng khoán có lẽ là khó khả thi.
Còn một vấn đề nữa, về nguyên tắc, thị trường chứng khoán là một phần thị trường vốn, về cơ bản nó đóng vai trò huy động vốn nhàn rỗi đầu tư cho sản xuất kinh doanh. Thị trường chứng khoán thứ cấp đóng vai trò chủ yếu cho thanh khoản chứng khoán. Tuy nhiên sau một thời gian phát triển, thị trường chứng khoán đã sớm biến thành một thị trường đầu cơ khổng lồ, ở đó hàng loạt các thủ đoạn đè giá thổi giá… phi pháp hoành hành như chốn không người đã làm thất vọng rất nhiều nhà đầu tư chân chính. Các công cụ của thị trường chứng khoán gồm các cơ quan quản lý và các tổ chức kinh doanh chứng khoán chính là những người phải chịu trách nhiệm chính về việc thị trường chứng khoán suy sụp và làm mất niềm tin của nhà đầu tư. Hãy xem kinh nghiệm của thị trường bất động sản. Sự sụp đổ của thị trường bất động sản không phải là do cung nhiều hơn cầu, giá bị thổi quá cao… mà chủ yếu là do mất lòng tin của các nhà đầu tư thứ cấp và của người tiêu dùng.
Làm gì để vực dậy TTCK?
Trong kỳ họp thứ 4 Quốc hội khóa XIII, Phó Thủ tướng Nguyễn Xuân Phúc cho biết Chính phủ đang xem xét ban hành đề án tái cơ cấu thị trường chứng khoán, dự kiến đến năm 2015 sẽ hoàn thành về căn bản. Phát biểu trên tờ Đầu Tư Chứng Khoán ngày 21/11, Chủ tịch Ủy ban Chứng khoán Vũ Bằng cũng nói Bộ Tài chính và Ủy ban đang xem xét nhiều giải pháp cho thị trường chứng khoán trong năm 2013. Có thể nói lúc này cả thị trường chứng khoán đang rất trông chờ vào các chính sách giải cứu mới. Nhưng vấn đề là thay đổi những gì trong toàn bộ thị trường. Có ba vấn đè cần được quan tâm: Tổ chức lại các công cụ quản lý và kinh doanh chứng khoán, cải thiện giá cổ phiếu, khai thông nguồn tiền cho thị trường. Chúng ta cùng xem xét các hành động có thể.
Về các tổ chức quản lý và kinh doanh chứng khoán, thống kê sơ bộ cho thấy, trong tổng số hơn 100 CTCK công bố báo cáo quý III/2012 có tới hơn một nửa báo cáo lỗ, một số chưa báo cáo. Nhiều đơn vị thua lỗ 4-5 năm liên tiếp, rất nhiều CTCK đang ở tình trạng lỗ lũy kế trên 50% vốn điều lệ (và khó huy động tăng thêm vốn), thậm chí có nguy cơ mất hết vốn hoặc đang ôm những khoản phải thu lên tới vài nghìn tỷ đồng trong khi chưa có trích lập dự phòng. Theo quy định tại Thông tư 165 có hiệu lực từ 1/12/2012, các CTCK bị kiểm soát đặc biệt không khắc phục được tình trạng kiểm soát đặc biệt, có lỗ lũy kế đạt 50% vốn điều lệ trở lên sẽ có thể bị đình chỉ hay tạm ngừng hoạt động. Nếu chiếu theo các quy định này, nhiều khả năng sẽ có tới gần trăm công ty bị xóa sổ (trong tổng cộng 105 CTCK đã được cấp phép hoạt đông) nếu TTCK không có dấu hiệu cải thiện. Quá tốt. Với quy mô TTCK của ta số lượng 105 CTCK là quá nhiều, nhiều đến mức để sống, họ phải làm loạn thị trường. Cần sớm tổ chức lại hệ thống các công cụ quản lý và kinh doanh trên TTCK.
Về nguồn tiền bơm cho thị trường chứng khoán, với tư cách là công cụ huy động vốn cho sản xuất kinh doanh, việc bơm vốn cho thị trường này hoạt động bằng những ưu đãi về lãi suất và chính sách là không hợp lý. Hãy để cho nó hoạt động theo đúng cơ chế thị trường, chỉ có như vậy mới có thể giảm bớt tình trạng đầu cơ. Về giá cổ phiếu, không thể có chính sách riêng nào của TTCK có thể nâng được giá cổ phiếu. Chỉ có một nền kinh tế phát triển lành mạnh, chỉ có một nền kinh tế mà các doanh nghiệp sản xuất kinh doanh có lãi mới có thể nâng được giá cổ phiếu. Viễn cảnh này hãy còn phải chờ, nếu không nói còn phải chờ lâu. Vậy trong thời gian nghỉ ngơi này hãy cố gắng làm sạch, cố gắng tổ chức lại hệ thống các công cụ quản lý và kinh doanh chứng khoán. Có lẽ đó là điều duy nhất có thể làm được trong lúc này.

markdown:
Chỉ sau 12 năm từ khi thành lập, thị trường chứng khoán Việt Nam đã có những bước tiến khổng lồ. So với cách đây 12 năm, quy mô thị trường hiện tăng trên 50 lần nhưng thời hoàng kim của TTCK tuy chưa xa mà dường như đã rất xưa.
Sự trưởng thành của TTCK được thể hiện sinh động qua nhiều con số, vốn hoá năm đầu tiên dưới 1% GDP, nhưng cuối năm 2011 đạt gần 27%. Khối lượng giao dịch cũng tăng 30- 40 lần so với năm đầu tiên giao dịch. Công ty niêm yết trong năm đầu tiên thị trường hoạt động chỉ hơn 10 doanh nghiệp, nay tăng lên gần 800 doanh nghiệp. Huy động vốn thực sự là điểm đáng chú ý hơn cả, với gần 700.000 tỷ đồng huy động cho nền kinh tế qua 12 năm, đỉnh cao là năm 2007 đạt 127.000 tỷ đồng. Luồng vốn đầu tư gián tiếp nước ngoài có thời điểm cao nhất lên đến 12 tỷ USD, nay khoảng 6,7 tỷ USD, góp phần cân bằng cán cân thanh toán, cũng như gia tăng sức hấp dẫn của môi trường đầu tư Việt Nam trong con mắt nhà đầu tư quốc tế. Các tổ chức kinh doanh chứng khoán đã có những bước phát triển về quy mô, mạng lưới công nghệ và trở thành một tổ chức trung gian phục vụ cho hoạt động tư vấn, cổ phần hóa kết nối cung cầu trên thị trường chứng khoán. Về số lượng tài khoản nhà đầu tư cũng ngày một gia tăng, khi mới có thị trường chứng khoán chỉ có khoảng 3.000 tài khoản, nhưng đến hiện nay đã có 1,2 triệu tài khoản. Đó là những con số thống kế, còn thực tế TTCK hiện nay ra sao?
![ ](https://static1.cafeland.vn/cafelandnew/upload/tintuc/thitruong/2012/12/tuan-02/chungkhoandosan-1355041963.jpg)
**Rơi xuống vực nhưng chưa tới đáy
**
Trên toàn thị trường hiện có tới gần 70% cổ phiếu được giao dịch dưới mệnh giá, nhiều cổ phiếu rẻ bằng một chén nước chè… nguội. Sàn giao dịch chứng khoán TP.HCM hiện có hơn 51 mã chứng khoán giao dịch có giá dưới 5.000 đồng/cổ phiếu, thậm chí có mã giá dưới 2.000 đồng/cổ phiếu. Sàn Hà Nội cũng không kém cạnh với la liệt cổ phiếu giao dịch dưới mệnh giá. Thị trường không thể bật dậy cho dù HNX-Index đang ở vùng thấp lịch sử, còn VN-Index cũng ở mức thấp nhất trong nhiều tháng qua. Điều đáng nói là tính thanh khoản trên thị trường tiếp tục đứng ở mức rất thấp và thực sự vẫn đang thử thách sự kiên nhẫn đã sắp cạn kiệt của nhà đầu tư. Gần như trong toàn bộ tháng 11/2012, giá trị giao dịch khớp lệnh cổ phiếu trên cả 2 sàn chứng khoán TP.HCM và Hà Nội đều quanh quẩn ở con số vài trăm tỷ, chưa bằng giá trị giao dịch của một cổ phiếu blue-chip hoặc một cổ phiếu đầu cơ thời sôi động. Ai cầm “cổ” muốn chuyển sang tiền đều buộc phải bán rẻ, thấp hơn giá tham chiếu. Dự báo diễn biến trên thực tế của cả hai chỉ số VN-Index, HNX-Index, giao dịch chung trên thị trường và biến động giá của các cổ phiếu không những không tích cực mà có chiều hướng đang xấu hơn nữa.
Rất nhiều nhà đầu tư tỏ ra mất niềm tin vào cổ phiếu. Đối với họ, TTCK đã thử thách sự kiên nhẫn của họ một cách thái quá. TTCK trải qua một thời kỳ “downtrend” kéo dài, quá dài. Một số nhà đầu tư mua vào bắt đáy chờ sự chuyển biến của thị trường nhưng sự khởi sắc đã không trở thành hiện thực. Những người cầm cổ phiếu từ tháng 8 đến cuối tháng 11 không những không có lãi, mà tài khoản của họ vẫn không ngừng co lại. Hệ lụy của sự eo hẹp của dòng tiền vào thị trường là sự mất kiên nhẫn của đại đa số các nhà đầu tư.
**Câu hỏi ai cũng trả lời được**
Không thể phủ nhận sự đi xuống của TTCK trong những năm gần đây phần nhiều là do hoạt động của các doanh nghiệp yếu kém và niềm tin đối với thị trường, với doanh nghiệp suy giảm. Nhưng khó khăn không chỉ xuất phát tự nội tại các doanh nghiệp, mà một phần không nhỏ đến từ sự khan hiếm, cạn kiệt của dòng tiền nói chung. Các dự báo gần đây đều cho thấy, nền kinh tế đã có những bước chuyển biến tích cực. Ngay trong năm khó khăn 2012, nền kinh tế vẫn có những điểm sáng (như lạm phát ổn định, tăng trưởng đang phục hồi trở lại, PMI tăng trở lại ấn tượng...) và dự báo cho 2013 cũng đã có nhiều điểm hồng, không chỉ còn là mầu xám. Hệ thống ngân hàng - mạch máu của nền kinh tế - cũng được đánh giá đã qua giai đoạn khó khăn nhất và thanh khoản cũng đang khá dồi dào, Ngân hàng Nhà nước đang liên tục hút ròng trên thị trường mở...
Trên thị trường, không ít nhà đầu tư chứng khoán tin tưởng dòng tiền sẽ sớm trở lại với chứng khoán sau hàng loạt các biện pháp giải cứu doanh nghiệp, giải cứu thị trường bất động sản (BĐS) như lãi suất giảm, đẩy mạnh tín dụng, giảm thuế, giãn thuế, tăng cường đầu tư công, bơm tiền cho người có nhu cầu mua nhà... Tuy nhiên, thực tế đã không diễn biến đúng như dự đoán và dự báo của nhiều người. TTCK đã không phản ứng tích cực với các thông tin tốt về lãi suất, về sự ổn định của đồng VND. Vấn đề nằm ở chỗ, với một nền kinh tế mà tồn kho hàng hóa lên tới vài chục tỷ USD (riêng BĐS cũng hơn chục tỷ USD), nợ xấu ngân hàng lên tới 10% dư nợ tín dụng, nhiều doanh nghiệp Nhà nước, tập đoàn đang vùng vẫy tìm cọc... thì ưu tiên đầu tiên có lẽ không phải dành cho chứng khoán.
Điều mà nhiều người nhận thấy là đó là vấn đề tiền cạn kiệt và hướng đi của dòng tiền không phải vào chứng khoán mà dường như tiền đang phải tập trung triệt để cho công cuộc tái cấu trúc nền kinh tế đang ở bước đầu. Thực tế, hàng loạt các tay chơi lớn trên thị trường là các ngân hàng, công ty chứng khoán, quỹ đầu tư, các doanh nghiệp Nhà nước, tập đoàn, tổng công ty vốn trước đây được coi là một trong những động lực thúc đẩy thị trường đi lên thì giờ đều đang vật lộn với những khó khăn như nợ xấu, tiền đầu tư dàn trải... Một khi doanh nghiệp chưa thể tự gỡ khó cho mình thì việc cầm tiền đầu tư vào các thị trường khác như chứng khoán, BĐS hay những chính sách hỗ trợ hướng dòng tiền vào chứng khoán có lẽ là khó khả thi.
Còn một vấn đề nữa, về nguyên tắc, thị trường chứng khoán là một phần thị trường vốn, về cơ bản nó đóng vai trò huy động vốn nhàn rỗi đầu tư cho sản xuất kinh doanh. Thị trường chứng khoán thứ cấp đóng vai trò chủ yếu cho thanh khoản chứng khoán. Tuy nhiên sau một thời gian phát triển, thị trường chứng khoán đã sớm biến thành một thị trường đầu cơ khổng lồ, ở đó hàng loạt các thủ đoạn đè giá thổi giá… phi pháp hoành hành như chốn không người đã làm thất vọng rất nhiều nhà đầu tư chân chính. Các công cụ của thị trường chứng khoán gồm các cơ quan quản lý và các tổ chức kinh doanh chứng khoán chính là những người phải chịu trách nhiệm chính về việc thị trường chứng khoán suy sụp và làm mất niềm tin của nhà đầu tư. Hãy xem kinh nghiệm của thị trường bất động sản. Sự sụp đổ của thị trường bất động sản không phải là do cung nhiều hơn cầu, giá bị thổi quá cao… mà chủ yếu là do mất lòng tin của các nhà đầu tư thứ cấp và của người tiêu dùng.
**Làm gì để vực dậy TTCK?**
Trong kỳ họp thứ 4 Quốc hội khóa XIII, Phó Thủ tướng Nguyễn Xuân Phúc cho biết Chính phủ đang xem xét ban hành đề án tái cơ cấu thị trường chứng khoán, dự kiến đến năm 2015 sẽ hoàn thành về căn bản. Phát biểu trên tờ Đầu Tư Chứng Khoán ngày 21/11, Chủ tịch Ủy ban Chứng khoán Vũ Bằng cũng nói Bộ Tài chính và Ủy ban đang xem xét nhiều giải pháp cho thị trường chứng khoán trong năm 2013. Có thể nói lúc này cả thị trường chứng khoán đang rất trông chờ vào các chính sách giải cứu mới. Nhưng vấn đề là thay đổi những gì trong toàn bộ thị trường. Có ba vấn đè cần được quan tâm: Tổ chức lại các công cụ quản lý và kinh doanh chứng khoán, cải thiện giá cổ phiếu, khai thông nguồn tiền cho thị trường. Chúng ta cùng xem xét các hành động có thể.
Về các tổ chức quản lý và kinh doanh chứng khoán, thống kê sơ bộ cho thấy, trong tổng số hơn 100 CTCK công bố báo cáo quý III/2012 có tới hơn một nửa báo cáo lỗ, một số chưa báo cáo. Nhiều đơn vị thua lỗ 4-5 năm liên tiếp, rất nhiều CTCK đang ở tình trạng lỗ lũy kế trên 50% vốn điều lệ (và khó huy động tăng thêm vốn), thậm chí có nguy cơ mất hết vốn hoặc đang ôm những khoản phải thu lên tới vài nghìn tỷ đồng trong khi chưa có trích lập dự phòng. Theo quy định tại Thông tư 165 có hiệu lực từ 1/12/2012, các CTCK bị kiểm soát đặc biệt không khắc phục được tình trạng kiểm soát đặc biệt, có lỗ lũy kế đạt 50% vốn điều lệ trở lên sẽ có thể bị đình chỉ hay tạm ngừng hoạt động. Nếu chiếu theo các quy định này, nhiều khả năng sẽ có tới gần trăm công ty bị xóa sổ (trong tổng cộng 105 CTCK đã được cấp phép hoạt đông) nếu TTCK không có dấu hiệu cải thiện. Quá tốt. Với quy mô TTCK của ta số lượng 105 CTCK là quá nhiều, nhiều đến mức để sống, họ phải làm loạn thị trường. Cần sớm tổ chức lại hệ thống các công cụ quản lý và kinh doanh trên TTCK.
Về nguồn tiền bơm cho thị trường chứng khoán, với tư cách là công cụ huy động vốn cho sản xuất kinh doanh, việc bơm vốn cho thị trường này hoạt động bằng những ưu đãi về lãi suất và chính sách là không hợp lý. Hãy để cho nó hoạt động theo đúng cơ chế thị trường, chỉ có như vậy mới có thể giảm bớt tình trạng đầu cơ. Về giá cổ phiếu, không thể có chính sách riêng nào của TTCK có thể nâng được giá cổ phiếu. Chỉ có một nền kinh tế phát triển lành mạnh, chỉ có một nền kinh tế mà các doanh nghiệp sản xuất kinh doanh có lãi mới có thể nâng được giá cổ phiếu. Viễn cảnh này hãy còn phải chờ, nếu không nói còn phải chờ lâu. Vậy trong thời gian nghỉ ngơi này hãy cố gắng làm sạch, cố gắng tổ chức lại hệ thống các công cụ quản lý và kinh doanh chứng khoán. Có lẽ đó là điều duy nhất có thể làm được trong lúc này.


text:
Đèn Led (Light Emitting Diod), còn gọi là đi ốt phát sáng là một trong những thiết bị mở ra kỷ nguyên mới về việc sử dụng nguồn ánh sáng phục vụ...
Dãn cách tên bằng dấu phẩy(,).

WARC-Type: response

Content-Type: application/http; msgtype=response

Cache-control: private, max-age=0

Set-Cookie: xf_session=4fdf4524ebfd7ced5ff2c0861c9c4068; path=/; secure; httponly

Connection: close

Server: Nginx-VPSSIM

X-Frame-Options: SAMEORIGIN

Vary: Accept-Encoding

Content-Type: text/html; charset=UTF-8


text:
Và mùa đông lạnh lùng buốt giá.
Nỗi cô đơn riêng mình ta.
Và mùa đông một trời trắng xóa.
Cho tâm tư mong tháng ngày qua.
Đời còn nhiều nhung nhớ.
Cho dù tình mình đã lỡ.
Vẫn mong cho bóng người quay về.
Về đây em tìm về quá khứ.
Đã cho đôi ta mộng mơ.
Về đây em một trời như thơ.
Sẽ cho ta những kỷ niệm xưa.
Tình còn nhiều tha thiết.
Và đời một màu xanh biếc.
Chắc em không nỡ lòng ra đi.
ĐK:
Ta yêu em trong giấc mơ này.
Ta yêu em trong những cơn say.
Welcome to Nhac.Pro.Vn
Một trời ân ái mình hãy sống buông lơi thời gian.
Ta bên nhau quến hết u sầu.
Vui bên nhau cho hết đêm thâu.
Tình yêu sẽ mang ta đến gần bên nhau.
vde midi

WARC-Truncated: length

Server: Apache

X-Powered-By: W3 Total Cache/0.9.5.1

Pragma: public

Cache-Control: max-age=3600, public


text:
Hotspot Shield tạo ra một mạng riêng ảo (VPN) giữa máy tính của bạn và AnchorFree Internet gateway.
Hotspot Shield là một sản phẩm thương mại (miễn phí) được tạo ra để cho phép người dùng Internet truy cập Internet thông qua một máy chủ trung gian (được quản lý bởi người chủ của Hotspot Shield), do đó, cho phép họ tránh được các cơ chế lọc nội dung (cho nên, tránh được các kiểm duyệt), để đảm bảo an ninh cho thông tin trực tuyến giữa máy tính của người dùng và các máy chủ Hotspot Shield, và để đảm bảo tính ẩn danh của truy cập tới tài nguyên Internet.
Hotspot Shield được phát triển và được sở hữu bởi AnchorFree.
AnchorFree được sáng lập vào đầu năm 2005 bởi những nhà doanh nghiệp của Thung lũng Silicon, những người muốn người dùng có thể kiểm soát dữ liệu online của riêng mình, cùng tính riêng tư của mình trên Internet.
Các máy chủ của AnchorFree trải rộng trên thế giới để phục vụ tốt nhất những khách hàng của mình tại 175 quốc gia.
Hệ điều hành:
Windows 7
Windows XP
Windows 2000
Windows Vista
Mac OS X (10.5 Leopard)
Mac OS X (10.6 Snow Leopard)
Mac OS X (10.7 Lion)
hoặc

X-ac: 1.dca _dca

X-hacker: If you're reading this, you should visit automattic.com/jobs and apply to join the fun, mention this header.

Server: nginx

Link: <http://wp.me/p1i7Oz-dh>; rel=shortlink

Vary: Cookie


markdown:
# Mua bán phụ kiện xe máy giá rẻ tại Thị Xã Thủ Dầu Một Bình Dương
Trang thông tin rao vặt, mua bán các loại phụ kiện xe máy phong phú, giá rẻ tại Thị Xã Thủ Dầu Một Bình Dương. Cung cấp đầy đủ phụ kiện xe máy nhanh chóng, mạng lưới rộng khắp, thông tin cập nhật 24/7 tại muaban.net.
[](https://muaban.net/phu-kien-xe-may-thi-xa-thu-dau-mot-l0907-c55/len-dan-ao-sh-y-ban-co-muon-sh-viet-cua-ban-tro-thanh-sh-y--id35227180)
![Lên dàn áo sh ý bạn có muốn sh việt của bạn trở thành sh ý. Lên dàn áo sh ý bạn có muốn sh việt của bạn trở thành sh ý.](https://cdn.muaban.net/cdn/images/thumb-list/201610/22/932/534fdc06f3c54946bbd6fa480fb5da68.jpg)
[](https://muaban.net/phu-kien-xe-may-thi-xa-thu-dau-mot-l0907-c55/len-dan-ao-sh-y-ban-co-muon-sh-viet-cua-ban-tro-thanh-sh-y--id35227180)

Cache-Control: private

Content-Type: text/html; charset=utf-8


text:
14M1-N Đường 38, Quốc Hương, Thảo Điền, Quận 2, TPHCM
Khách Sạn Phong Lan – Quận 2 tọa lạc tại 14M1-N Đường 38, Quốc Hương, Thảo Điền, Quận 2,Thành phố Hồ Chí Minh. Với vị trí thuận lợi chỉ cách trung tâm thành phố 9.6km, trong khu Thảo Điền, gần Khu du lịch Văn Thánh, Lãnh sự quán Thụy Sỹ , Khách Sạn Phong Lan – Quận 2 hứa hẹn là một điểm đến lý tưởng cho những chuyến công tác và du lịch của du khách tại thành phố nhộn nhịp này.
Khách Sạn Phong Lan – Quận 2 với tiêu chuẩn 2 sao cùng lối thiết kế trang nhã, sang trọng, pha trộn giữa nét cổ điển và hiện đại đã tạo nên một không gian ấm cúng, sảng khoái cho du khách. Cùng với hệ thống phòng nghỉ được trang bị với đầy đủ tiện nghi như dịch vụ giặt là, quầy lễ tân 24 giờ, Wi-Fi ở khu vực công cộng, cho thuê xe đạp, nhà hàng, máy lạnh, máy sấy tóc, tủ đồ ăn uống nhẹ, tắm bồn và tắm hoa sen riêng, truy cập internet không dây (miễn phí)... chắc chắn sẽ mang đến cho du khách một chuyến nghỉ dưỡng thoải mái và khó quên.
Đến với thành phố mang tên Bác, đến với Khách Sạn Phong Lan – Quận 2, du khách có thể tự thiết kế riêng cho mình một lịch trình tham quan, nghỉ dưỡng hoặc đặt tour du lịch khám phá các địa danh nổi tiếng như Chợ Bến Thành, Nhà Thờ Đức Bà, Bến Nhà Rồng, Bưu Điện Thành Phố, Dinh Thống Nhất, Bảo Tàng Chứng Tích Chiến Tranh, Bảo Tàng Hồ Chí Minh, Phố Người Hoa, Khu phố Tây, các trung tâm mua sắm…
Với đội ngũ nhân viên giàu kinh nghiệm, làm việc theo phong cách chuyên nghiệp, phục vụ suốt 24/7 và các tiện nghi hiện đại, chuyến du lịch của bạn sẽ trọn vẹn và ý nghĩa hơn khi đến với Khách Sạn Phong Lan – Quận 2.
Còn chần chờ gì nữa, hãy nhanh tay đặt phòng tại Khách Sạn Phong Lan – Quận 2 trên My Tour để có cơ hội đặt phòng giá rẻ nhất cùng với nhiều chương trình khuyến mại hấp dẫn chỉ dành riêng cho khách hàng của Mytour.

markdown:
[
14M1-N Đường 38, Quốc Hương, Thảo Điền, Quận 2, TPHCM
](javascript:;)
**Khách Sạn Phong Lan – Quận 2 **tọa lạc tại 14M1-N Đường 38, Quốc Hương, Thảo Điền, Quận 2,Thành phố Hồ Chí Minh. Với vị trí thuận lợi chỉ cách trung tâm thành phố 9.6km, trong khu Thảo Điền, gần Khu du lịch Văn Thánh, Lãnh sự quán Thụy Sỹ , **Khách Sạn Phong Lan – Quận 2 **hứa hẹn là một điểm đến lý tưởng cho những chuyến công tác và du lịch của du khách tại thành phố nhộn nhịp này. **Khách Sạn Phong Lan – Quận 2 **với tiêu chuẩn 2 sao cùng lối thiết kế trang nhã, sang trọng, pha trộn giữa nét cổ điển và hiện đại đã tạo nên một không gian ấm cúng, sảng khoái cho du khách. Cùng với hệ thống phòng nghỉ được trang bị với đầy đủ tiện nghi như dịch vụ giặt là, quầy lễ tân 24 giờ, Wi-Fi ở khu vực công cộng, cho thuê xe đạp, nhà hàng, máy lạnh, máy sấy tóc, tủ đồ ăn uống nhẹ, tắm bồn và tắm hoa sen riêng, truy cập internet không dây (miễn phí)... chắc chắn sẽ mang đến cho du khách một chuyến nghỉ dưỡng thoải mái và khó quên.
Đến với thành phố mang tên Bác, đến với
**Khách Sạn Phong Lan – Quận 2**, du khách có thể tự thiết kế riêng cho mình một lịch trình tham quan, nghỉ dưỡng hoặc đặt tour du lịch khám phá các địa danh nổi tiếng như Chợ Bến Thành, Nhà Thờ Đức Bà, Bến Nhà Rồng, Bưu Điện Thành Phố, Dinh Thống Nhất, Bảo Tàng Chứng Tích Chiến Tranh, Bảo Tàng Hồ Chí Minh, Phố Người Hoa, Khu phố Tây, các trung tâm mua sắm…
Với đội ngũ nhân viên giàu kinh nghiệm, làm việc theo phong cách chuyên nghiệp, phục vụ suốt 24/7 và các tiện nghi hiện đại, chuyến du lịch của bạn sẽ trọn vẹn và ý nghĩa hơn khi đến với
**Khách Sạn Phong Lan – Quận 2.**
Còn chần chờ gì nữa, hãy nhanh tay đặt phòng tại
**Khách Sạn Phong Lan – Quận 2 **trên My Tour để có cơ hội đặt phòng giá rẻ nhất cùng với nhiều chương trình khuyến mại hấp dẫn chỉ dành riêng cho khách hàng của Mytour.

Connection: Close

Server: Apache/2.2.15 (CentOS)

Pragma: no-cache

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0


text:
Tỉnh Lộ 55, Xã Bưng Riềng, Xuyên Mộc, Bà Rịa - Vũng Tàu (Xem bản đồ) ~ 18.44km
Ấp Hồ Tràm, Xã Phước Thuận, Xuyên Mộc, Bà Rịa - Vũng Tàu (Xem bản đồ) ~ 18.23km
Hồ Tràm, Phước Thuận, Xuyên Mộc, Bà Rịa - Vũng Tàu (Xem bản đồ) ~ 17.56km
Phước Thuận, Xuyên Mộc, Bà Rịa - Vũng Tàu (Xem bản đồ) ~ 17.65km
Quốc lộ 55, Bình Châu, Xuyên Mộc, Bà Rịa - Vũng Tàu (Xem bản đồ) ~ 20.5km
Ấp Bình Thắng, Xã Bình Châu, Xuyên Mộc, Bà Rịa - Vũng Tàu (Xem bản đồ) ~ 21.19km
Xã Bưng Riềng, Xuyên Mộc, Bà Rịa - Vũng Tàu (Xem bản đồ) ~ 17.7km
Cầu Nước Mặn, Quốc Lộ 55, Xã Thắng Hải, Hàm Tân, Bình Thuận., Xuyên Mộc, Bà Rịa - Vũng Tàu (Xem bản đồ) ~ 22.42km
Phước Thuận, Xuyên Mộc, Bà Rịa - Vũng Tàu (Xem bản đồ) ~ 18.69km
Phước Thuận, Xuyên Mộc, Bà Rịa - Vũng Tàu (Xem bản đồ) ~ 18.14km
110-112 Quốc Lộ 55, Thị trấn Phước Bửu, Xuyên Mộc, Bà Rịa - Vũng Tàu (Xem bản đồ) ~ 10.21km
Quốc Lộ 55, Bình Châu, Xuyên Mộc, Bà Rịa - Vũng Tàu (Xem bản đồ) ~ 16.71km
Với hơn 5.000 khách sạn, resort tại 63 tỉnh/ thành phố, Mytour ngày càng được du khách tin dùng để đặt khách sạn. Mytour sẽ hỗ trợ quý khách đặt khách sạn gần chợ Hòa Bình với chi phí hợp lý để có chuyến đi thật thú vị và tiết kiệm. Ngoài việc cung cấp những khách sạn giá tốt nhất, bạn còn có thể tìm thấy nhiều thông tin du lịch hữu ích và thú vị khác.
Đặt phòng khách sạn gần chợ Hòa Bình giá tốt nhất tại Mytour.vn, với nhiều khuyến mãi từ website và đơn vị khách sạn tiết kiệm lên đến 70%. Hơn 150.000 đánh giá từ khách hàng đã qua sử dụng khách sạn giúp bạn đưa ra những quyết định tốt nhất cho lựa chọn của mình. Đặc biệt chính sách ĐẢM BẢO HOÀN TIỀN chỉ có tại Mytour.vn, giờ đây bạn có thể hoàn toàn tin tưởng vào dịch vụ đặt phòng trực tuyến.
Chợ Hòa Bình tọa lạc tại Tỉnh lộ 328, Hòa Bình, Xuyên Mộc, Bà Rịa - Vũng Tàu. Chợ Hòa Bình có vị trí thuận lợi khi nằm trên trục đường chính dẫn ra phía các cung đường ven biển, đi ngang qua nhiều địa điểm tham quan nổi tiếng tại Xuyên Mộc. Tại đây, bạn sẽ có cơ hội mua sắm, trang bị những thứ thiết yếu cho chuyến hành trình của bạn. Nhiều mặt hàng đa dạng và đặc biệt là hải sản tươi sống tại chợ Hòa Bình chắc chắn là điểm nhấn khó quên trong lòng khách vãn lai.
Trên tuyết đường tỉnh lộ 328, ngoài việc khám phá chợ Hòa Bình thì điểm đến lý tưởng tiếp theo sẽ là bãi biển Hồ Tràm, bãi biển Hồ Cốc, hay khám phá khu rừng nguyên sinh Bình Châu – Phước Bửu. Xuyên Mộc còn có suối nước nóng Bình Châu nổi tiếng. Các loại hình thư giãn nghỉ ngơi tại đây rất là phù hợp và độc đáo. Ẩm thực tại địa phương cũng không kém phần hấp dẫn như: gỏi cá trích, các loại hải sản cá, mực, tôm, cua do ngư dân đánh bắt về.
Nhanh tay đặt tour du lịch đến Bà Rịa – Vũng Tàu với chi phí hợp lý và tiết kiệm nhất. Đến với Mytour bạn sẽ được hỗ trợ cho chuyến đi của mình trở nên dễ dàng và thuận tiện hơn!!

markdown:
[
Tỉnh Lộ 55, Xã Bưng Riềng, Xuyên Mộc, Bà Rịa - Vũng Tàu
(Xem bản đồ)
](javascript:;)
~ 18.44km
[
Ấp Hồ Tràm, Xã Phước Thuận, Xuyên Mộc, Bà Rịa - Vũng Tàu
(Xem bản đồ)
](javascript:;)
~ 18.23km
[
Hồ Tràm, Phước Thuận, Xuyên Mộc, Bà Rịa - Vũng Tàu
(Xem bản đồ)
](javascript:;)
~ 17.56km
[
Phước Thuận, Xuyên Mộc, Bà Rịa - Vũng Tàu
(Xem bản đồ)
](javascript:;)
~ 17.65km
[
Quốc lộ 55, Bình Châu, Xuyên Mộc, Bà Rịa - Vũng Tàu
(Xem bản đồ)
](javascript:;)
~ 20.5km
[
Ấp Bình Thắng, Xã Bình Châu, Xuyên Mộc, Bà Rịa - Vũng Tàu
(Xem bản đồ)
](javascript:;)
~ 21.19km
[
Xã Bưng Riềng, Xuyên Mộc, Bà Rịa - Vũng Tàu
(Xem bản đồ)
](javascript:;)
~ 17.7km
[
Cầu Nước Mặn, Quốc Lộ 55, Xã Thắng Hải, Hàm Tân, Bình Thuận., Xuyên Mộc, Bà Rịa - Vũng Tàu
(Xem bản đồ)
](javascript:;)
~ 22.42km
[
Phước Thuận, Xuyên Mộc, Bà Rịa - Vũng Tàu
(Xem bản đồ)
](javascript:;)
~ 18.69km
[
Phước Thuận, Xuyên Mộc, Bà Rịa - Vũng Tàu
(Xem bản đồ)
](javascript:;)
~ 18.14km
[
110-112 Quốc Lộ 55, Thị trấn Phước Bửu, Xuyên Mộc, Bà Rịa - Vũng Tàu
(Xem bản đồ)
](javascript:;)
~ 10.21km
[
Quốc Lộ 55, Bình Châu, Xuyên Mộc, Bà Rịa - Vũng Tàu
(Xem bản đồ)
](javascript:;)
~ 16.71km
Với hơn 5.000 khách sạn, resort tại 63 tỉnh/ thành phố, Mytour ngày càng được du khách tin dùng để đặt khách sạn. Mytour sẽ hỗ trợ quý khách đặt khách sạn gần
[ với chi phí hợp lý để có chuyến đi thật thú vị và tiết kiệm. Ngoài việc cung cấp những khách sạn giá tốt nhất, bạn còn có thể tìm thấy nhiều thông tin du lịch hữu ích và thú vị khác. chợ Hòa Bình](http://mytour.vn/d87/khach-san-tai-xuyen-moc.html) [ giá tốt nhất tại Mytour.vn, với nhiều khuyến mãi từ website và đơn vị khách sạn tiết kiệm lên đến 70%. Hơn 150.000 đánh giá từ khách hàng đã qua sử dụng khách sạn giúp bạn đưa ra những quyết định tốt nhất cho lựa chọn của mình. Đặc biệt chính sách Đặt phòng khách sạn gần chợ Hòa Bình](http://mytour.vn/c5/khach-san-tai-ba-ria-vung-tau.html) **Chợ Hòa Bình** tọa lạc tại Tỉnh lộ 328, Hòa Bình, Xuyên Mộc, Bà Rịa - Vũng Tàu. Chợ Hòa Bình có vị trí thuận lợi khi nằm trên trục đường chính dẫn ra phía các cung đường ven biển, đi ngang qua nhiều địa điểm tham quan nổi tiếng tại Xuyên Mộc. Tại đây, bạn sẽ có cơ hội mua sắm, trang bị những thứ thiết yếu cho chuyến hành trình của bạn. Nhiều mặt hàng đa dạng và đặc biệt là hải sản tươi sống tại chợ Hòa Bình chắc chắn là điểm nhấn khó quên trong lòng khách vãn lai.
Trên tuyết đường tỉnh lộ 328, ngoài việc khám phá
**chợ Hòa Bình** thì điểm đến lý tưởng tiếp theo sẽ là bãi biển Hồ Tràm, bãi biển Hồ Cốc, hay khám phá khu rừng nguyên sinh Bình Châu – Phước Bửu. Xuyên Mộc còn có suối nước nóng Bình Châu nổi tiếng. Các loại hình thư giãn nghỉ ngơi tại đây rất là phù hợp và độc đáo. Ẩm thực tại địa phương cũng không kém phần hấp dẫn như: gỏi cá trích, các loại hải sản cá, mực, tôm, cua do ngư dân đánh bắt về.
Nhanh tay
[ với chi phí hợp lý và tiết kiệm nhất. Đến với Mytour bạn sẽ được hỗ trợ cho chuyến đi của mình trở nên dễ dàng và thuận tiện hơn!! đặt tour du lịch đến Bà Rịa – Vũng Tàu](http://mytour.vn/tour/c5/tour-du-lich-ba-ria-vung-tau.html)


text:
Đặt phòng khách sạn Kiên Giang giá tốt nhất tại Mytour.vn, với nhiều khuyến mãi từ website và đơn vị khách sạn tiết kiệm lên đến 70%. Hơn 150.000 đánh giá từ khách hàng đã qua sử dụng khách sạn giúp bạn đưa ra những quyết định tốt nhất cho lựa chọn của mình. Đặc biệt chính sách ĐẢM BẢO HOÀN TIỀN chỉ có tại Mytour.vn, giờ đây bạn có thể hoàn toàn tin tưởng vào dịch vụ đặt phòng trực tuyến.
Ngoài ra, chúng tôi cũng trân trọng giới thiệu đến bạn những khách sạn Kiên Giang tốt nhất 2016 trong các hạng mục Best Seller và Top Review trên website Mytour.vn. Đây là những khách sạn đạt tiêu chuẩn rất cao và làm hài lòng cả những vị khách khó tính nhất.
Với hơn 5.000 khách sạn, resort tại 63 tỉnh/ thành phố, Mytour ngày càng được du khách tin dùng để tìm kiếm khách sạn. Mytour sẽ hỗ trợ quý khách đặt khách sạn Kiên Giang với chi phí hợp lý để có chuyến đi thật thú vị và tiết kiệm. Ngoài việc cung cấp những khách sạn giá tốt nhất, bạn có còn có thể tìm thấy nhiều thông tin du lịch hữu ích và thú vị khác.
Kiên Giang là một dải đất nằm ở phía tây nam của Tổ quốc. Phía đông và đông nam của tỉnh Kiên Giang giáp với các tỉnh An Giang, Cần Thơ và Hậu Giang, phía nam giáp Cà Mau, phía bắc giáp Cam-pu-chia với đường biên giới dài 54km, ngoài ra còn có hơn 100 hòn đảo lớn nhỏ ngoài vịnh. Là một tỉnh đồng bằng sông Cửu Long, Kiên Giang có những cánh đồng lúa phì nhiêu, có rừng vàng, biển bạc, có hải đảo và đồi núi với nguồn tài nguyên phong phú và đa dạng về nông sản, hải sản, khoáng sản và du lịch. Nằm ven vịnh Thái Lan, Kiên Giang lưu thông với quốc tế bằng đường biển rất thuận lợi. Nghề chính của tỉnh là nghề nông, nhưng nghề cá cũng rất phát triển. Biển Kiên Giang có những bãi tôm và luồng cá rất lớn với nhiều loại cá ngon: thu, chim, nhám, bạc má, chép, he, cá thiều. Kiên Giang còn nổi tiếng về nghề làm nước mắm. Kiên Giang có nhiều địa danh nổi tiếng đi vào lịch sử là rừng U Minh, Hòn Đất, Hà Tiên, Phú Quốc... Thiên nhiên đã ưu đãi cho Kiên Giang nhiều danh lam thắng cảnh như "Non nước Hà Tiên", "Biển trời Phú Quốc". Địa danh Hà Tiên (cách Rạch Giá 90km về hướng tây bắc) được đánh giá là nơi có nhiều cảnh đẹp (chỉ sau Hạ Long) với nhiều núi non hang động, chùa chiền, lăng mộ và nhiều hòn đảo gần xa.
Khi đặt khách sạn tại Kiên Giang, Mytour với hệ thống đặt phòng có hơn 78 khách sạn được trang bị đầy đủ tiện nghi hiện đại cùng với dịch vụ chăm sóc khách hàng hoàn hảo sẽ mang lại cho bạn những trải nghiệm thú vị và hài lòng cả những du khách khó tính nhất.
Du lịch Kiên Giang bạn sẽ được tham quan những thắng cảnh nổi tiếng nơi đây như:
Dinh Cậu: Mũi đá Dinh Cậu cuốn hút du khách không chỉ bởi vẻ kỳ thú do thiên nhiên ban tặng, mà còn vì sự huyền bí, linh thiêng qua những truyền thuyết xa xưa.
Chuyện kể rằng người dân Phú Quốc sống bằng nghề chài lưới, nhiều ngư dân ra khơi gặp sóng dữ đã mãi mãi không về. Đột nhiên một mõm đá dần dần nổi lên nơi cửa biển, người dân cho rằng đây là điềm tốt nên đến đây thờ cúng và quả nhiên chuyến đi gặp được sóng êm biển lặng. Tin lành đồn xa, dần dần hình thành nên tục thờ cúng tại mỏm đá này và đặt tên là DINH CẬU. Dinh Cậu còn có tên gọi là Miếu thờ Long Vương. Miếu thờ này được đặt trong một khung cảnh thiên nhiên tuyệt đẹp, kỳ thú được tạo nên từ ghềnh đá và biển, liên quan với đạo thờ Mẫu.
Khu Du lịch Suối Tranh: Từ thị trấn Dương Đông, theo tuyến đường Dương Đông – Hàm Ninh khoảng 10 km là đến được Suối Tranh. Ở đây có phong cảnh thiên nhiên đẹp với hoa cỏ, núi rừng, biển và suối, là địa điểm tổ chức cắm trại, dã ngoại thú vị. Đến đây, du khách có thể dựng lều bên bờ suối để nghỉ ngơi và tham gia nhiều hoạt động dã ngoại đặc sắc. Suối Tranh bắt nguồn từ dãy núi Hàm Ninh, do các khe nước nhỏ hợp thành, róc rách chảy trên núi, len lỏi qua biết bao rừng cây, gộp đá, thác ghềnh, với chiều dài khoảng 15 km. Con suối chảy hiền hoà bên những phiến đá nối tiếp nhau chạy dài xa tít. Có đoạn suối chảy qua các ghềnh đá tạo nên những con thác nhỏ với làn nước mềm mại, trắng xoá… Có một lối mòn dọc theo bờ suối, đủ để hai người nắm tay nhau đi dưới tán rừng xanh mát. Những bậc tam cấp trên lối đi vừa với mỗi bước chân nên du khách không có cảm giác mệt dù đang lên núi. Khung cảnh tựa như bức tranh thiên nhiên tuyệt đẹp (có lẽ vì thế mà người ta gọi là suối Tranh).
Suối Tranh được bao bọc bởi cây cối xanh tươi, hoa thơm cỏ lạ. Những chòm cây hình thù khẳng khiu rắn rỏi, thân cây ngả màu xanh xám, mọc chen vào đá, những nhánh phong lan bám vào thân cây, nơi năm ba nhánh nơi một vài chòm, hoa vàng, hoa trắng….trông như những hột cúc áo khâu thành chuỗi, dày thưa đậm nhạt treo lơ lửng giữa không trung. Gần suối Tranh còn có nhiều hang động huyền hoặc, kỳ bí như hang Dơi nằm trên núi cao chừng 200 m, sâu đến 50 m, có nhiều thạch nhũ đẹp, lạ mắt.
Đến với Suối Tranh, du khách có thể tắm suối, hay tắm biển thoả thích. Hoặc cũng có thể tựa mình trên những phiến đá rêu phong, lắng tay nghe tiếng suối chảy, chim ca trong một không gian thật bình lặng, chợt nhớ đến lời ca Trong bài “Trăng mờ bên suối” của Lê Mộng Nguyên khá nổi tiếng: “Người hẹn cùng ta đến bên bờ suối, Rừng chiều mờ sương ánh trăng mờ chiếu….” thật cảm thấy nao lòng.
Bãi Sao: Bãi Sao nằm về phía Nam, một trong những bãi biển đẹp nhất của đảo Phú Quốc với bãi cát trắng phẳng lì, là điểm đến không thể thiếu khi đi du lịch Phú Quốc
Bên cạnh đó, một yếu tố khác thu hút khách du lịch đó chính là nền ẩm thực phong phú và đa dạng. Lưu trú tại Kiên Giang, quý khách sẽ được thưởng thức đặc sản chủ yếu là ghẹ, tôm sú, bào ngư, nhum, các loại cá: cá thu, cá bớp, cá nhồng, cá ngừ, cá bống mú, cá gáy, cá cam, ốc cờ, ốc vú nàng, cá nhệch, cá trích, tôm thẻ, tôm tích, ốc hương, ốc nhảy, ốc giác, ốc voi, ốc gai, cá bò.
Hải sản ở Phú Quốc luôn tươi rói, lượn một vòng quanh chợ Dương Đông vào đúng giờ hải sản lên chợ mới thấy thích mắt: mực còn trong vắt, nằm thở trên kệ, cá tôm còn xanh lè, mắt trong veo, chẹp nhìn chỉ muốn thảy vào vỉ than hồng thêm chén muối tiêu chanh nữa là đủ. Chính vì Hải sản ở đây tươi ngon nên khi chế biến chỉ cần làm cách đơn giản nhất để cảm nhận được vị ngon của biển…
Nếu bạn có kế họach đến nghỉ dưỡng hoặc công tác ở vùng đất Kiên Giang, hãy để Mytour giúp bạn chuẩn bị 1 chuyến đi dễ dàng, thú vị, và tiết kiệm nhất bạn nhé!
Đến với Mytour.vn, bạn sẽ có cơ hội đặt phòng khách sạn giá rẻ tại Phú Quốc cùng nhiều chương trình khuyến mại hấp dẫn chỉ dành riêng cho khách hàng Mytour nữa đấy!

markdown:
Đặt phòng khách sạn Kiên Giang giá tốt nhất tại Mytour.vn, với nhiều khuyến mãi từ website và đơn vị khách sạn tiết kiệm lên đến 70%. Hơn 150.000 đánh giá từ khách hàng đã qua sử dụng khách sạn giúp bạn đưa ra những quyết định tốt nhất cho lựa chọn của mình. Đặc biệt chính sách ĐẢM BẢO HOÀN TIỀN chỉ có tại Mytour.vn, giờ đây bạn có thể hoàn toàn tin tưởng vào dịch vụ đặt phòng trực tuyến.
Ngoài ra, chúng tôi cũng trân trọng giới thiệu đến bạn những
**khách sạn Kiên Giang tốt nhất 2016**
Với hơn 5.000 khách sạn, resort tại 63 tỉnh/ thành phố, Mytour ngày càng được du khách tin dùng để tìm kiếm khách sạn. Mytour sẽ hỗ trợ quý khách đặt khách sạn Kiên Giang với chi phí hợp lý để có chuyến đi thật thú vị và tiết kiệm. Ngoài việc cung cấp những khách sạn giá tốt nhất, bạn có còn có thể tìm thấy nhiều thông tin du lịch hữu ích và thú vị khác.
**Kiên Giang** là một dải đất nằm ở phía tây nam của Tổ quốc. Phía đông và đông nam của tỉnh Kiên Giang giáp với các tỉnh An Giang, Cần Thơ và Hậu Giang, phía nam giáp Cà Mau, phía bắc giáp Cam-pu-chia với đường biên giới dài 54km, ngoài ra còn có hơn 100 hòn đảo lớn nhỏ ngoài vịnh. Là một tỉnh đồng bằng sông Cửu Long, Kiên Giang có những cánh đồng lúa phì nhiêu, có rừng vàng, biển bạc, có hải đảo và đồi núi với nguồn tài nguyên phong phú và đa dạng về nông sản, hải sản, khoáng sản và du lịch. Nằm ven vịnh Thái Lan, Kiên Giang lưu thông với quốc tế bằng đường biển rất thuận lợi. Nghề chính của tỉnh là nghề nông, nhưng nghề cá cũng rất phát triển. Biển Kiên Giang có những bãi tôm và luồng cá rất lớn với nhiều loại cá ngon: thu, chim, nhám, bạc má, chép, he, cá thiều. Kiên Giang còn nổi tiếng về nghề làm nước mắm. Kiên Giang có nhiều địa danh nổi tiếng đi vào lịch sử là rừng U Minh, Hòn Đất, Hà Tiên, Phú Quốc... Thiên nhiên đã ưu đãi cho Kiên Giang nhiều danh lam thắng cảnh như "Non nước Hà Tiên", "Biển trời Phú Quốc". Địa danh Hà Tiên (cách Rạch Giá 90km về hướng tây bắc) được đánh giá là nơi có nhiều cảnh đẹp (chỉ sau Hạ Long) với nhiều núi non hang động, chùa chiền, lăng mộ và nhiều hòn đảo gần xa.
Khi
[đặt khách sạn tại Kiên Giang](http://mytour.vn/c35/khach-san-tai-kien-giang.html), Mytour với hệ thống đặt phòng có hơn 78 khách sạn được trang bị đầy đủ tiện nghi hiện đại cùng với dịch vụ chăm sóc khách hàng hoàn hảo sẽ mang lại cho bạn những trải nghiệm thú vị và hài lòng cả những du khách khó tính nhất. [Du lịch Kiên Giang](http://mytour.vn/tour/c35/tour-du-lich-kien-giang.html) bạn sẽ được tham quan những thắng cảnh nổi tiếng nơi đây như: *Dinh Cậu*: Mũi đá Dinh Cậu cuốn hút du khách không chỉ bởi vẻ kỳ thú do thiên nhiên ban tặng, mà còn vì sự huyền bí, linh thiêng qua những truyền thuyết xa xưa.
Chuyện kể rằng người dân Phú Quốc sống bằng nghề chài lưới, nhiều ngư dân ra khơi gặp sóng dữ đã mãi mãi không về. Đột nhiên một mõm đá dần dần nổi lên nơi cửa biển, người dân cho rằng đây là điềm tốt nên đến đây thờ cúng và quả nhiên chuyến đi gặp được sóng êm biển lặng. Tin lành đồn xa, dần dần hình thành nên tục thờ cúng tại mỏm đá này và đặt tên là DINH CẬU. Dinh Cậu còn có tên gọi là Miếu thờ Long Vương. Miếu thờ này được đặt trong một khung cảnh thiên nhiên tuyệt đẹp, kỳ thú được tạo nên từ ghềnh đá và biển, liên quan với đạo thờ Mẫu.
*Khu Du lịch Suối Tranh:* Từ thị trấn Dương Đông, theo tuyến đường Dương Đông – Hàm Ninh khoảng 10 km là đến được Suối Tranh. Ở đây có phong cảnh thiên nhiên đẹp với hoa cỏ, núi rừng, biển và suối, là địa điểm tổ chức cắm trại, dã ngoại thú vị. Đến đây, du khách có thể dựng lều bên bờ suối để nghỉ ngơi và tham gia nhiều hoạt động dã ngoại đặc sắc. Suối Tranh bắt nguồn từ dãy núi Hàm Ninh, do các khe nước nhỏ hợp thành, róc rách chảy trên núi, len lỏi qua biết bao rừng cây, gộp đá, thác ghềnh, với chiều dài khoảng 15 km. Con suối chảy hiền hoà bên những phiến đá nối tiếp nhau chạy dài xa tít. Có đoạn suối chảy qua các ghềnh đá tạo nên những con thác nhỏ với làn nước mềm mại, trắng xoá… Có một lối mòn dọc theo bờ suối, đủ để hai người nắm tay nhau đi dưới tán rừng xanh mát. Những bậc tam cấp trên lối đi vừa với mỗi bước chân nên du khách không có cảm giác mệt dù đang lên núi. Khung cảnh tựa như bức tranh thiên nhiên tuyệt đẹp (có lẽ vì thế mà người ta gọi là suối Tranh).
Suối Tranh được bao bọc bởi cây cối xanh tươi, hoa thơm cỏ lạ. Những chòm cây hình thù khẳng khiu rắn rỏi, thân cây ngả màu xanh xám, mọc chen vào đá, những nhánh phong lan bám vào thân cây, nơi năm ba nhánh nơi một vài chòm, hoa vàng, hoa trắng….trông như những hột cúc áo khâu thành chuỗi, dày thưa đậm nhạt treo lơ lửng giữa không trung. Gần suối Tranh còn có nhiều hang động huyền hoặc, kỳ bí như hang Dơi nằm trên núi cao chừng 200 m, sâu đến 50 m, có nhiều thạch nhũ đẹp, lạ mắt.
Đến với Suối Tranh, du khách có thể tắm suối, hay tắm biển thoả thích. Hoặc cũng có thể tựa mình trên những phiến đá rêu phong, lắng tay nghe tiếng suối chảy, chim ca trong một không gian thật bình lặng, chợt nhớ đến lời ca Trong bài “Trăng mờ bên suối” của Lê Mộng Nguyên khá nổi tiếng: “Người hẹn cùng ta đến bên bờ suối, Rừng chiều mờ sương ánh trăng mờ chiếu….” thật cảm thấy nao lòng.
Bãi Sao:
*Bãi Sao nằm về phía Nam, một trong những bãi biển đẹp nhất của đảo Phú Quốc với bãi cát* trắng phẳng lì, là điểm đến không thể thiếu khi đi du lịch Phú Quốc
Bên cạnh đó, một yếu tố khác thu hút khách du lịch đó chính là nền ẩm thực phong phú và đa dạng. Lưu trú tại Kiên Giang, quý khách sẽ được thưởng thức đặc sản chủ yếu là ghẹ, tôm sú, bào ngư, nhum, các loại cá: cá thu, cá bớp, cá nhồng, cá ngừ, cá bống mú, cá gáy, cá cam, ốc cờ, ốc vú nàng, cá nhệch, cá trích, tôm thẻ, tôm tích, ốc hương, ốc nhảy, ốc giác, ốc voi, ốc gai, cá bò.
Hải sản ở Phú Quốc luôn tươi rói, lượn một vòng quanh chợ Dương Đông vào đúng giờ hải sản lên chợ mới thấy thích mắt: mực còn trong vắt, nằm thở trên kệ, cá tôm còn xanh lè, mắt trong veo, chẹp nhìn chỉ muốn thảy vào vỉ than hồng thêm chén muối tiêu chanh nữa là đủ. Chính vì Hải sản ở đây tươi ngon nên khi chế biến chỉ cần làm cách đơn giản nhất để cảm nhận được vị ngon của biển…
Nếu bạn có kế họach đến nghỉ dưỡng hoặc công tác ở vùng đất Kiên Giang, hãy để Mytour giúp bạn chuẩn bị 1 chuyến đi dễ dàng, thú vị, và tiết kiệm nhất bạn nhé!
Đến với Mytour.vn, bạn sẽ có cơ hội
**cùng nhiều chương trình khuyến mại hấp dẫn chỉ dành riêng cho khách hàng Mytour nữa đấy! đặt phòng khách sạn giá rẻ tại Phú Quốc **


text:
Vài tuần trước tôi bắt đầu viết loạt bài về LINQ to SQL. LINQ to SQL là một bộ khung (framework) có sẵn cho O/RM (object relational mapping) trong .NET 3.5, nó cho phép bạn dễ dàng mô hình hóa các CSDL quan hệ dùng các lớp .NET. Bạn có thể dùng các biểu thức LINQ để truy vấn CSDL, cũng như có thể cập nhật/thêm/xóa dữ liệu từ đó.
Dưới đây là 6 phần đầu tiên của loạt bài này:
- Sử dụng LINQ to SQL (phần 1)
- Định nghĩa các lớp mô hình dữ liệu (phần 2)
- Truy vấn Cơ sở dữ liệu (phần 3)
- Cập nhật cơ sở dữ liệu (LINQ to SQL phần 4)
- Sử dụng asp:LinqDataSource (phần 5)
- Lấy dữ liệu dùng Stored Procedure (LINQ to SQL phần 6)
Trong phần 6 tôi đã nói tới cách chúng ta có thể dùng các Stored Procedure (SPROC) và các hàm do người dùng định nghĩa (UDF) để truy vấn và lấy dữ liệu về dùng mô hình dữ liệu LINQ to SQL. Trong viết này, tôi sẽ nói về cách dùng các thủ tục này để cập nhật, thêm hoặc xóa dữ liệu.
Để có thể minh họa cho điều này, chúng ta hãy bắt đầu từ đầu và xây dựng một lớp truy xuất dữ liệu cho CSDL mẫu Northwind:
Bước 1: Tạo lớp truy xuất dữ liệu (chưa dùng đến các thủ tục)
Trong phần 2, tôi có nói về cách dùng LINQ to SQL designer có trong VS 2008 để tạo một mô hình lớp giống như dưới đây:
Thêm các quy tắc kiểm tra dữ liệu vào các lớp mô hình dữ liệu
Sau khi định nghĩa các lớp trong mô hình dữ liệu và các quan hệ giữa chúng, chúng ta sẽ tiếp tục thêm vào các quy tắc kiểm tra tính hợp lệ của dữ liệu. Chúng ta có thể làm điều này bằng cách thêm các lớp partial vào trong dự án và thêm các quy tắc kiểm tra vào các lớp mô hình dữ liệu (tôi đã nói đến vấn đề này khá kỹ trong bài 4).
Ví dụ, bạn có thể thêm một quy tắc để đảm bảo rằng số điện thoại của khách hàng được nhập đúng định dạng, và chúng ta không cho phép thêm một đơn hàng (Order) nếu trường OrderDate lớn hơn RequiredDate. Một khi đã được định nghĩa như dưới đây, các phương thức kiểm tra sẽ tự động được thực thi bất kỳ lúc nào chúng ta cập nhật lại các đối tượng trong hệ thống.
VB:
C#:
Thêm phương thức GetCustomer() vào lớp DataContext
Hiện tại chúng ta đã tạo các lớp mô hình dữ liệu, và đã áp dụng các phương thức kiểm tra trên chúng, chúng ta có thể truy vấn và tương tác với dữ liệu. Chúng ta có thể làm được điều này bằng cách viết các câu lệnh LINQ với các lớp mô hình dữ liệu để truy vấn và cập nhật CSDL (tôi đã có nói về điều này trong bài 3). Thêm nữa tôi cũng có thể ánh xạ các SPROC vào lớp DataContext và dùng chúng để đưa dữ liệu vào CSDL (bài 6).
Khi xây dựng các lớp dữ liệu LINQ to SQL, bạn sẽ thường có nhu cầu đưa các câu lệnh LINQ thường dùng vào các phương thức tiện ích trong lớp DataContext. Bạn có thể làm được điều này bằng cách thêm một lớp partial váo project. Ví dụ, banks có thể thêm một phương thức có tên “GetCustomer()” cho phép chúng ta tìm kiếm và lấy về các đối tượng Customer từ CSDL dựa trên día trị của CustomerID:
VB:
C#:
Bước 2: Dùng lớp truy cập dữ liệu (chưa sử dụng SPROC)
Hiện tại chúng ta đã có một lớp truy cập dữ liệu (data access layer) để biểu diễn mô hinh dữ liệu, tích hợp các quy tắc và cho phép chúng ta có thể thực hiện truy vấn, cập nhật, thêm và xóa dữ liệu.
Hãy xem một trường hợp đơn giản là khi chúng ta lấy về một đối tượng khách hàng đã có, cập nhật lại giá trị của trường ContactName và PhoneNumber, sau đó tạo mới một đối tượng Order và kết hợp chúng với nhau. CHúng ta có thể viết đoạn lệnh dưới đây để làm tất cả điều này trong một transaction. LINQ to SQL sẽ đảm bảo các thủ tục kiểm tra sẽ được thực thi và cho phép trước khi dữ liệu có thể được cập nhật một cách thực sự:
VB:
C#:
LINQ to SQL theo dõi các thay đổi mà chúng ta đã tạo trên các đối tượng được lấy về từ DataContext, và cũng theo dõi cả các đối tượng mà chúng ta thêm vào. Khi gọi SubmitChanges(), LINQ to SQL sẽ kiểm tra xem dữ liệu có hợp lệ hay không, và có đúng với các quy tắc logic hay không, nếu đúng thì các câu SQL động sẽ được sinh ra để cập nhật bản ghi Customer ở trên, và thêm một bản ghi mới vào bảng Orders.
Chờ một giây – Tôi nghĩ bài viết này định nói về việc dùng SPROC cơ mà ???
Nếu vẫn đang đọc bài này, bạn có lẽ sẽ cảm thấy khó hiểu vì không thấy nói gì về SPROC. Tại sao tôi hướng dẫn bạn cách viết lệnh để làm việc với các đối tượng trong mô hình dữ liệu, rồi cho phép các câu lệnh SQL động được thực thi? Sao tôi vẫn chưa cho các bạn thấy cách để gọi các SPROC để thực hiện việc chèm/sửa/xóa dữ liệu ?
Lý do là vì mô hình lập trình của LINQ to SQL để làm việc với các đối tượng mô hình dữ liệu bằng SPROC cũng hoàn toàn tương tự với việc sử dụng các câu SQL động. Cách chúng ta thêm các quy tắc kiểm tra cũng hoàn toàn tương tự (do vậy các quy tắc mà ta đã thêm vào trước đây sẽ vẫn có hiệu quả khi chúng ta chuyển sang dùng SPROC). Đoạn lệnh ở trên để lấy về một Customer, rồi cập nhật và thêm một Order sẽ hoàn toàn giống nhau, không phụ thuộc vào việc chúng ta dùng các câu SQL động hay các SPROC để thực hiện việc truy cập vào CSDL.
Mô hình lập trình này rất mạnh mẽ theo cả hai nghĩa: nó không bắt bạn phải học hai cách dùng khác nhau, và bạn cũng không cần phải quyết định ngay từ đầu là dung SPROC hay không. Ban đầu, bạn có thể dùng các câu SQL động được cung cấp bởi LINQ to SQL cho tất cả các câu truy vấn, chèn, cập nhật và xóa dữ liệu. Bạn sau đó có thể thêm vào các quy tắc để kiểm tra tính hợp lệ của dữ liệu, và rồi sau nữa lại có thể thay đổi để dùng các SPROC – hoặc không tùy bạn quyết định. Các đoạn lệnh và các đoạn test bạn đã viết trước đây sẽ vẫn được sử dụng tiếp, không phụ thuộc vào việc dùng SQL hay SPROC.
Phần tiếp theo của bài này sẽ biểu diễn cách cập nhật mô hình dữ liệu mà chúng ta đã tạo ra để dùng SPROC trong việc thêm/sửa/xóa dữ liệu, chúng ta vẫn tiếp tục dùng các quy tắc xác thực, và vẫn tiếp tục làm việc với cùng các đoạn lệnh đã viết ở trên.
Cách sử dụng SPROC để thực hiện Insert/Update/Delete
Chúng ta có thể sửa lại lớp truy cập dữ liệu đã được xây dựng trước đây để xử lý các thao tác cập nhật, thay vì dùng các câu SQL động, theo một trong 2 cách sau:
1) Dùng LINQ to SQL designer để cấu hình các SPROC để thực thi khi gặp thao tác thêm/xóa/sửa dữ liệu trên các lớp mô hình dữ liệu.
hoặc:
2) Thêm một lớp partial NorthwindDataContext vào dự án, rồi viết các phương thức partial tương ứng với các thao tác Insert/Update/Delete (ví dụ: InsertOrder, UpdateOrder, DeleteOrder) mà nó sẽ được gọi khi chúng ta thực hiện Insert/Update/Delete trên các đối tượng mô hình dữ liệu. Các phương thức partial đó sẽ được truyền vào các đối tượng dữ liệu mà ta muốn cập nhật, và chúng ta có thể thực thi các thủ tục hay câu lệnh SQL mà chúng ta muốn dùng để lưu đối tượng đó vào CSDL.
Khi dùng cách 1) (dùng LINQ to SQL designer) để cấu hình các SPROC để gọi, thì thực ra nó cũng sẽ tạo ra cách lệnh tương tự như chúng ta dùng trong cách 2). Nói chúng tôi khuyên các bạn dùng LINQ to SQL designer để cấu hình các SPROC trong 90% trường hợp – và chỉ trong các trường hợp nào bạn cần tùy biến lại cách gọi ở một mức độ cao, bạn mới nên viết các lệnh một cách trực tiếp.
Bước 3: Thêm một Order bằng cách dùng SPROC
Chúng ta sẽ bắt đầu chuyển mô hình dữ liệu sang dùng SPROC, bắt đầu từ đối tượng Object.
Đầu tiên, chúng ta đến cửa sổ “Server Explorer” mở rộng nhánh Stored Procedures trong CSDL của chúng ta, và sau đó nhấn phải chuột và chọn “Add New Stored Procedure”:
Sau đó ta tạo thêm một thủ tục có tên “InsertOrder” có nhiệm vụ chèn thêm một bản ghi mới vào bảng Orders:
Hãy chú ý cách SPROC định nghĩa tham số OrderID như một tham số dạng OUTPUT. Đó là vì cột OrderID trong CSDL là cột tự tăng mỗi khi thêm một bản ghi mới vào. Người gọi sẽ truyền giá trị NULL khi gọi nó – và thủ tucjnafy sẽ trả về giá trị của OrderID mới được tạo ra (bằng cách gọi hàm SCOPE_IDENTITY() ỏ cuối thủ tục).
Sau khi tạo ra SPROC, chúng ta sẽ mở LINQ to SQL designer của lớp truy cập dữ liệu. Như tôi đã nói trong bài 6, chúng ta có thể kéo/thả các SPROC từ Server Explorer lên trên màn hình chính của trình thiết kế. Chúng ta cũng sẽ làm điều tương tự với thủ tục InsertOrder vừa được tạo:
Bước cuối cùng là cấu hình lại để lớp truy cập dữ liệu dùng thủ tục SPROC khi chèn các đối tượng Order mới vào trong CSDL. Chúng ta có thể là điều này bằng cách chọn lớp Order trong cửa sooe LINQ to SQL designer, và sau đó chuyển đến bảng thuộc tính và nhấn nút 3 chấm (…) ở mục Insert để chọn thao tác tương ứng:
Khi nhấn nút này, cửa sổ sau sẽ hiện ra để có thể tùy biến hành vi Insert:
Ở trên, nếu bạn chọn chế độ mặc nhiên (“Use Runtime”) thì LINQ to SQL sẽ tính toán và sinh ra câu lệnh SQL động để thực hiện các thao tác tương ứng. Chúng ta có thể thay đổi bằng cách nhấn chuột vào Customize và chọn thủ tục InsertOrder từ danh sách các SPROC:
LINQ to SQL sẽ hiển thị các tham số của thủ tục mà ta đã chọn, và cho phép ánh xạ các thuộc tính của lớp Order và các tham số của InsertOrder. Mặc nhiên, LINQ to cũng tự động xác định các tham số tương ứng theo tên, tuy nhiên bạn vẫn có thể sửa lại nếu muốn.
Nhấn vào nút Ok là xong. Giờ đây bất cứ khi nào một đối tượng Order được thêm vào DataContext và phương thức SubmitChanges() được gọi, thủ tục InsertOrder sẽ được thực thi thay cho câu lệnh SQL động.
Quan trọng: Mặc dù hiện tại chúng ta đã dùng SPROC để cập nhật, phương thức “OnValidate” của Order mà chúng ta đã tạo trước đây (trong bước 1 của bài viết này) để kiểm tra tính hợp lệ của đối tượng Order sẽ vẫn được thực thi trước khi bất kỳ thay đổi nào được thực hiện. Do vậy chúng ta sẽ có một các rõ ràng để xử lý và kiểm tra các quy tắc, và có thể dùng lại một cách dễ dàng mà không phụ thuộc vào việc chúng ta dùng SQL động hay dùng SPROC.
Bước 4: Thực hiện cập nhật dùng SPROC
Giờ chúng ta sẽ sửa lại đối tượng Customer để cho phép cập nhật bằng cách dùng SPROC.
Chúng ta sẽ bắt đầu bằng cách tạo một SPROC tên “UpdateCustomer” như dưới đây:
Chú ý ở trên, ngoài việc truyền giá trị cho tham số CustomerID, tôi cũng truyền một tham số khác có tên @Original_CustomerID. Cột CustomerID trong bảng Customers không phải là một cột tự tăng, và nó có thể được chỉnh sửa như một phần của thao tác cập nhật. Do vậy chúng ta sẽ phải truyền cả giá trị của CustomerID cũ và CustomerID mới để có thể cập nhật. Chúng ta sẽ xem cách ánh xạ các cột ngay sau đây.
Bạn sẽ thấy ở trên tôi đã truyền một tham số có tên @Version (có kiểu timestamp) vào cho SPROC. Đây là một cột tôi đã thêm vào bảng Customers để có thể xử lý việc tranh chấp khi các thao tác cập nhật được diễn ra đồng thời (optimistic concurrency). Tôi sẽ nói chi tiết hơn về việc xử lý tranh chấp này trong bài viết sau của loạt bài LINQ to SQL, nhưng tôi cũng nói luôn là LINQ to SQL hỗ trợ đầy đủ optimistic concurrency, và cho phép bạn có thể chọn dùng version timestamp hay bằng cách cung cấp cả giá trị cũ/mới cho SPROC để có thể xác định được các thay đổi được tạo ra bới người khác kể từ lần cuối bạn đọc dữ liệu. Trong ví dụ này tôi dùng timestamp vì nó giúp viết lệnh rõ ràng hơn.
Một khi đã tạo xong SPROC, bạn có thể kéo/thả nó vào cửa sổ LINQ to SQL designer để thêm nó như một phương thức trong lớp DataContext. Chúng ta có thể chọn lớp Customer trong cửa sổ thiết kế và nhấn vào nút … ở mục Update để dùng SPROC vừa tạo trong việc cập nhật lại dữ liệu trong bảng Customer:
Chúng ta sẽ chọn ô “Customize” và chọn để dùng UpdateCustomer:
Khi ánh xạ các thuộc tính của đối tượng Customer vào các tham số của SPROC, bạn sẽ được nhắc rằng bạn đang muốn gán các giá trị mới(Current) hay các giá trị gốc (Original) – là các giá trị mà bạn lấy về lần đầu từ CSDL. Ví dụ, bạn sẽ cần gán giá trị thuộc tính Customer.CustomerID “mới” vào cho tham số @CustomerID của SPROC, và Customer.CustomerID “gốc” vào cho @original_customerID.
Khi nhấn “Ok” trên ửa sổ này, bạn đã hoàn thành việc ánh xạ các tham số vào các thuộc tính. Từ giờ trở đi, mỗi khi cập nhật lại giá trị cho đối tượng Customer và gọi SubmitChanges(), thủ tục UpdateCustomer sẽ được gọi thay cho câu lệnh SQL động.
Quan trọng: Dù rằng hiện tại bạn đã dùng SPROC để cập nhật, phương thức “OnPhoneChanging()” mà chúng ta đã tạo trước đó (trong bước 1 của bài này) để xác thực số điện thoại vẫn được thực thi trước khi bất kỳ thay đổi nào được lưu lại hay “UpdateCustomer” được gọi. Chúng ta có một cách rõ ràng, sáng sủa để hiện thực hóa cá quy tắc xử lý cũng như xác thực dữ liệu, và có thể dùng chúng mà không phụ thuộc và việc chúng ta đang dùng câu lệnh SQL động hay SPROC.
Bước 5: Dùng lớp DAL lần nữa
Một khi đã cập nhật lớp truy cạp dữ liệu (DAL) để dùng SPROC thay vì câu lệnh SQL động, bạn có thể chạy lại các câu lệnh tương tự các câu lệnh ta đã làm ở bước 2 để làm việc với các lớp mô hình dữ liệu:
Giờ đây việc cập nhật đối tượng Customer, và việc thêm các đối tượng Order sẽ được thực thi thông qua thủ tục đã tạo thay vì dùng các câu SQL động. Các quy tắc kiểm tra cũng được thực thi hệt như trước đây, và các câu lệnh chúng ta đã dùng để sử dụng các lớp mô hình dữ liệu cũng hoàn toàn tương tự.
Một số ưu điểm của việc dùng SPROC
Sau đây là một vài ý nhỏ có thể có ích cho bạn trong việc dùng SPROC:
Dùng các tham số dạng output:
Trong phần 3 ở trên, tôi đã biểu diễn cách chúng ta có thể trả về giá trị OrderID mới được tạo (đây là một cột tự tăng trong CSDL) bằng cách dùng một tham số dạng output. Bạn sẽ không bị giới hạn trong việc trả về chỉ các cột tự tăng – mà thật sự bạn có thể trarveef các giá trị cho bất kỳ tham số nào của SPROC. Bạn có thể dùng cách tiếp cận này cho cả trường hợp Insert và Update. LINQ to SQL có thể lấy giá trị trả về và dùng nó để cập nhật giá trị của các thuộc tính của các đối tượng trong mô hình dữ liệu mà không cần thực thi thêm một câu truy vấn thứ 2 để lấy các giá trị đã được tạo ra.
Sẽ thế nào nếu một SPROC phát ra một lỗi?
Nếu một SPROC phát ra một lỗi khi thực hiện việc Insert/Update/Delete, LINQ to SQL sẽ tự động hủy và rollback toàn bộ các thay đổi đã tạo ra trong transaction kết hợp với lời gọi SubmitChanges(). Điều này đảm bảo rằng dữ liệu của bạn sẽ luôn trong trạng thái đúng đắn.
Tôi có thể viết code thay vì dung ORM designer để gọi SPROC?
Như đã nói trong phần đầu bài viết này, bạn có thể dùng LINQ to SQL designer để ánh xạ các thao tác thêm/sửa/xóa vào các SPROC, hoặc bạn cũng có thể thêm các phương thức partial vào lớp DataContext và viết lệnh gọi chúng. Đây là một ví dụ về cách viết các phương thức trong lớp partial của NorthwindDataContext dùng UpdateCustomer để gọi một thủ tục:
Đoạn lệnh ở trên thực ra chính là cái được tạo ra khi bạn dùng LINQ to SQL designer để ánh xạ SPROC và kết hợp nó với thao tác cập nhật đối tượng Customer. Bạn có thể xem nó như điểm khởi đầu và sau đó tiếp tục thêm bất kỳ lệnh xử lý nào bạn muốn (ví dụ: dùng giá trị trả về của SPROC để phát ra các exception tương ứng với mã lỗi nhận được, optimistic concurrency…).
Tổng kết
LINQ to SQL là một trình ánh xạ đối tượng (ORM) cực kỳ mềm dẻo. Nó cho phép bạn viết các đoạn code theo kiểu hướng đối tượng một cách rõ ràng, sang sủa để lấy, cập nhật hay thêm dữ liệu.
Hơn hết, nó cho phép bạn thiết kế các lớp mô hình dữ liệu mộ cách dễ dàng, không phụ thuộc vào cách nó được lưu hay nạp lại từ CSDL. Bạn có thêt dùng trình ORM xây dựng sẵn để lấy về hay cập nhật dữ liệu một cách hiệu quả bằng cách dùng các câu SQL động. Hoặc bạn cũng có thể cấu hình lớp dữ liệu để dùng SPROC. Điều hay là các đoạn lệnh của bạn để dùng lớp dữ liệu này, cũng như các thủ tục để kiểm tra logic đều không phụ thuộc vào cách lưu/nạp dữ liệu thực sự được dùng.
Trong bài tiếp theo của loạt bài này, tôi sẽ nói về một số khái niệm còn lại trong LINQ to SQL, bao gồm: Single Table Inheritance, Deferred/Eager Loading, Optimistic Concurrency, và xử lý trong các ngữ cảnh Multi-Tier.
Scott
Các bạn đang xem bài viết trong loạt bài “LINQ to SQL”, loạt bài này được dịch từ blog ScottGu http://weblogs.asp.net/scottgu/
6 thoughts on “Cập nhật dữ liệu dùng Stored Procedure (LINQ to SQL phần 7)”
Em chào thầy!
Em cũng đang tìm hiểu về linq bài học của thầy rất hay. Nhưng em ko tìm đựoc linq tải để cài đặt.
Nếu đựoc thầy update link cho em với nhé.
Em cảm ơn thầy nhìu
Linq đã có sẵn trong Visual Studio 2008 trở về sau.
Chào anh,em muốn thiết lập một mã tự động khi thêm vào nhưng hàm thêm em không dùng SPROC.vậy em muốn khi thêm vào mã tự động tăng em phải làm sao
Chào anh namdh và các bạn!
Em là người tự học C# nên cũng hơi kém, và cũng chỉ mới bắt đầu thôi.
Em đọc bài này thấy phương pháp dùng SP để cấu hình cập nhật dữ liệu trong LINQ to SQL có thể cập nhật được trường khóa chính (ID) ở dạng chuỗi (không phải số tăng tự động) khi truyền cả tham số ID cũ và mới cho SP (original_customerID và customerID ở trong bài).
Nhưng em làm vẫn không cập nhật được khi thay đổi trường khóa chính, khi thay đổi tham số Version ở 2 dạng current và Original đều báo lỗi như nhau là không thể thay đổi trường này được.
Em xin hỏi anh namdh và các bạn biết vấn đề này xin chỉ giúp, em đã search hơn 1 tuần rồi mà vẫn chưa làm được.
code: https://hotfile.com/dl/157651173/c23aa3b/fmdi.rar.html
Em xin cảm ơn trước!
chào thầy.em muốn viết 1 procedure để phân loại khách hàng như sau:căn cứ vào số lần đặt phòng của khách hàng trong table hoadon (trong table hoadon gồm có:maphieu,makh,tongtien,…;table khachhang gồm có:makh,tenkh…).nếu khách hàng đặt phòng trên 5 lần thì quy định là loại khách vip,còn dưới mức đó là khách thường.mong thầy có thể giúp em.em xin cám ơn.
dạ e chào thầy ạ. e muốn hỏi là mã của e là type varchar(10), em muốn khi insert bằng SP thì nó tự động tăng. ví dụ như lúc đầu sẽ là TK0000001 cứ tăng dần mỗi khi insert vào TK0000002, rồi TK0000003 đến TK999999 thì cách làm như thế nào ạ? à, nếu giả sử khi thêm vào là cùng 1 lúc thì sẽ kiểm tra ngày/giờ,phút/giây như thế nào để tránh mã bị trùng ạ?

markdown:
Vài tuần trước tôi bắt đầu viết loạt bài về LINQ to SQL. LINQ to SQL là một bộ khung (framework) có sẵn cho O/RM (object relational mapping) trong .NET 3.5, nó cho phép bạn dễ dàng mô hình hóa các CSDL quan hệ dùng các lớp .NET. Bạn có thể dùng các biểu thức LINQ để truy vấn CSDL, cũng như có thể cập nhật/thêm/xóa dữ liệu từ đó.
Dưới đây là 6 phần đầu tiên của loạt bài này:
[Sử dụng LINQ to SQL (phần 1)](https://namdh.wordpress.com/2008/10/08/linq-to-sql-part-1-using-linq/) [Định nghĩa các lớp mô hình dữ liệu (phần 2)](https://namdh.wordpress.com/2008/11/07/linq-to-sql-part-2-modeling-classes/) [Truy vấn Cơ sở dữ liệu (phần 3)](https://namdh.wordpress.com/2008/11/21/linq-to-sql-part-3-querying-database/) [Cập nhật cơ sở dữ liệu (LINQ to SQL phần 4)](https://namdh.wordpress.com/2009/01/06/linq-to-sql-part-4-updating-our-database/) [Sử dụng asp:LinqDataSource (phần 5)](https://namdh.wordpress.com/2009/03/20/linq-to-sql-part-5-linqdatasource/) [Lấy dữ liệu dùng Stored Procedure (LINQ to SQL phần 6)](https://namdh.wordpress.com/2009/05/17/getting-data-using-stored-procedure-linq-to-sql-part-6/)
Trong phần 6 tôi đã nói tới cách chúng ta có thể dùng các Stored Procedure (SPROC) và các hàm do người dùng định nghĩa (UDF) để truy vấn và lấy dữ liệu về dùng mô hình dữ liệu LINQ to SQL. Trong viết này, tôi sẽ nói về cách dùng các thủ tục này để cập nhật, thêm hoặc xóa dữ liệu.
Để có thể minh họa cho điều này, chúng ta hãy bắt đầu từ đầu và xây dựng một lớp truy xuất dữ liệu cho CSDL mẫu Northwind:
**Bước 1: Tạo lớp truy xuất dữ liệu (chưa dùng đến các thủ tục)**
Trong phần 2, tôi có nói về cách dùng LINQ to SQL designer có trong VS 2008 để tạo một mô hình lớp giống như dưới đây:
**Thêm các quy tắc kiểm tra dữ liệu vào các lớp mô hình dữ liệu**
Sau khi định nghĩa các lớp trong mô hình dữ liệu và các quan hệ giữa chúng, chúng ta sẽ tiếp tục thêm vào các quy tắc kiểm tra tính hợp lệ của dữ liệu. Chúng ta có thể làm điều này bằng cách thêm các lớp partial vào trong dự án và thêm các quy tắc kiểm tra vào các lớp mô hình dữ liệu (tôi đã nói đến vấn đề này khá kỹ trong bài 4).
Ví dụ, bạn có thể thêm một quy tắc để đảm bảo rằng số điện thoại của khách hàng được nhập đúng định dạng, và chúng ta không cho phép thêm một đơn hàng (Order) nếu trường OrderDate lớn hơn RequiredDate. Một khi đã được định nghĩa như dưới đây, các phương thức kiểm tra sẽ tự động được thực thi bất kỳ lúc nào chúng ta cập nhật lại các đối tượng trong hệ thống.
VB:
C#:
**Thêm phương thức GetCustomer() vào lớp DataContext**
Hiện tại chúng ta đã tạo các lớp mô hình dữ liệu, và đã áp dụng các phương thức kiểm tra trên chúng, chúng ta có thể truy vấn và tương tác với dữ liệu. Chúng ta có thể làm được điều này bằng cách viết các câu lệnh LINQ với các lớp mô hình dữ liệu để truy vấn và cập nhật CSDL (tôi đã có nói về điều này trong bài 3). Thêm nữa tôi cũng có thể ánh xạ các SPROC vào lớp DataContext và dùng chúng để đưa dữ liệu vào CSDL (bài 6).
Khi xây dựng các lớp dữ liệu LINQ to SQL, bạn sẽ thường có nhu cầu đưa các câu lệnh LINQ thường dùng vào các phương thức tiện ích trong lớp DataContext. Bạn có thể làm được điều này bằng cách thêm một lớp partial váo project. Ví dụ, banks có thể thêm một phương thức có tên “GetCustomer()” cho phép chúng ta tìm kiếm và lấy về các đối tượng Customer từ CSDL dựa trên día trị của CustomerID:
VB:
C#:
**Bước 2: Dùng lớp truy cập dữ liệu (chưa sử dụng SPROC)
**
Hiện tại chúng ta đã có một lớp truy cập dữ liệu (data access layer) để biểu diễn mô hinh dữ liệu, tích hợp các quy tắc và cho phép chúng ta có thể thực hiện truy vấn, cập nhật, thêm và xóa dữ liệu.
Hãy xem một trường hợp đơn giản là khi chúng ta lấy về một đối tượng khách hàng đã có, cập nhật lại giá trị của trường ContactName và PhoneNumber, sau đó tạo mới một đối tượng Order và kết hợp chúng với nhau. CHúng ta có thể viết đoạn lệnh dưới đây để làm tất cả điều này trong một transaction. LINQ to SQL sẽ đảm bảo các thủ tục kiểm tra sẽ được thực thi và cho phép trước khi dữ liệu có thể được cập nhật một cách thực sự:
VB:
C#:
LINQ to SQL theo dõi các thay đổi mà chúng ta đã tạo trên các đối tượng được lấy về từ DataContext, và cũng theo dõi cả các đối tượng mà chúng ta thêm vào. Khi gọi SubmitChanges(), LINQ to SQL sẽ kiểm tra xem dữ liệu có hợp lệ hay không, và có đúng với các quy tắc logic hay không, nếu đúng thì các câu SQL động sẽ được sinh ra để cập nhật bản ghi Customer ở trên, và thêm một bản ghi mới vào bảng Orders.
**Chờ một giây – Tôi nghĩ bài viết này định nói về việc dùng SPROC cơ mà ???
**
Nếu vẫn đang đọc bài này, bạn có lẽ sẽ cảm thấy khó hiểu vì không thấy nói gì về SPROC. Tại sao tôi hướng dẫn bạn cách viết lệnh để làm việc với các đối tượng trong mô hình dữ liệu, rồi cho phép các câu lệnh SQL động được thực thi? Sao tôi vẫn chưa cho các bạn thấy cách để gọi các SPROC để thực hiện việc chèm/sửa/xóa dữ liệu ?
Lý do là vì mô hình lập trình của LINQ to SQL để làm việc với các đối tượng mô hình dữ liệu bằng SPROC cũng hoàn toàn tương tự với việc sử dụng các câu SQL động. Cách chúng ta thêm các quy tắc kiểm tra cũng hoàn toàn tương tự (do vậy các quy tắc mà ta đã thêm vào trước đây sẽ vẫn có hiệu quả khi chúng ta chuyển sang dùng SPROC). Đoạn lệnh ở trên để lấy về một Customer, rồi cập nhật và thêm một Order sẽ hoàn toàn giống nhau, không phụ thuộc vào việc chúng ta dùng các câu SQL động hay các SPROC để thực hiện việc truy cập vào CSDL.
Mô hình lập trình này rất mạnh mẽ theo cả hai nghĩa: nó không bắt bạn phải học hai cách dùng khác nhau, và bạn cũng không cần phải quyết định ngay từ đầu là dung SPROC hay không. Ban đầu, bạn có thể dùng các câu SQL động được cung cấp bởi LINQ to SQL cho tất cả các câu truy vấn, chèn, cập nhật và xóa dữ liệu. Bạn sau đó có thể thêm vào các quy tắc để kiểm tra tính hợp lệ của dữ liệu, và rồi sau nữa lại có thể thay đổi để dùng các SPROC – hoặc không tùy bạn quyết định. Các đoạn lệnh và các đoạn test bạn đã viết trước đây sẽ vẫn được sử dụng tiếp, không phụ thuộc vào việc dùng SQL hay SPROC.
Phần tiếp theo của bài này sẽ biểu diễn cách cập nhật mô hình dữ liệu mà chúng ta đã tạo ra để dùng SPROC trong việc thêm/sửa/xóa dữ liệu, chúng ta vẫn tiếp tục dùng các quy tắc xác thực, và vẫn tiếp tục làm việc với cùng các đoạn lệnh đã viết ở trên.
**Cách sử dụng SPROC để thực hiện ** **Insert/Update/Delete**
Chúng ta có thể sửa lại lớp truy cập dữ liệu đã được xây dựng trước đây để xử lý các thao tác cập nhật, thay vì dùng các câu SQL động, theo một trong 2 cách sau:
1) Dùng LINQ to SQL designer để cấu hình các SPROC để thực thi khi gặp thao tác thêm/xóa/sửa dữ liệu trên các lớp mô hình dữ liệu.
hoặc:
2) Thêm một lớp partial NorthwindDataContext vào dự án, rồi viết các phương thức partial tương ứng với các thao tác Insert/Update/Delete (ví dụ: InsertOrder, UpdateOrder, DeleteOrder) mà nó sẽ được gọi khi chúng ta thực hiện Insert/Update/Delete trên các đối tượng mô hình dữ liệu. Các phương thức partial đó sẽ được truyền vào các đối tượng dữ liệu mà ta muốn cập nhật, và chúng ta có thể thực thi các thủ tục hay câu lệnh SQL mà chúng ta muốn dùng để lưu đối tượng đó vào CSDL.
Khi dùng cách 1) (dùng LINQ to SQL designer) để cấu hình các SPROC để gọi, thì thực ra nó cũng sẽ tạo ra cách lệnh tương tự như chúng ta dùng trong cách 2). Nói chúng tôi khuyên các bạn dùng LINQ to SQL designer để cấu hình các SPROC trong 90% trường hợp – và chỉ trong các trường hợp nào bạn cần tùy biến lại cách gọi ở một mức độ cao, bạn mới nên viết các lệnh một cách trực tiếp.
**Bước 3: Thêm một Order bằng cách dùng SPROC
**
Chúng ta sẽ bắt đầu chuyển mô hình dữ liệu sang dùng SPROC, bắt đầu từ đối tượng Object.
Đầu tiên, chúng ta đến cửa sổ “Server Explorer” mở rộng nhánh Stored Procedures trong CSDL của chúng ta, và sau đó nhấn phải chuột và chọn “Add New Stored Procedure”:
Sau đó ta tạo thêm một thủ tục có tên “InsertOrder” có nhiệm vụ chèn thêm một bản ghi mới vào bảng Orders:
Hãy chú ý cách SPROC định nghĩa tham số OrderID như một tham số dạng OUTPUT. Đó là vì cột OrderID trong CSDL là cột tự tăng mỗi khi thêm một bản ghi mới vào. Người gọi sẽ truyền giá trị NULL khi gọi nó – và thủ tucjnafy sẽ trả về giá trị của OrderID mới được tạo ra (bằng cách gọi hàm SCOPE_IDENTITY() ỏ cuối thủ tục).
Sau khi tạo ra SPROC, chúng ta sẽ mở LINQ to SQL designer của lớp truy cập dữ liệu. Như tôi đã nói trong bài 6, chúng ta có thể kéo/thả các SPROC từ Server Explorer lên trên màn hình chính của trình thiết kế. Chúng ta cũng sẽ làm điều tương tự với thủ tục InsertOrder vừa được tạo:
Bước cuối cùng là cấu hình lại để lớp truy cập dữ liệu dùng thủ tục SPROC khi chèn các đối tượng Order mới vào trong CSDL. Chúng ta có thể là điều này bằng cách chọn lớp Order trong cửa sooe LINQ to SQL designer, và sau đó chuyển đến bảng thuộc tính và nhấn nút 3 chấm (…) ở mục Insert để chọn thao tác tương ứng:
Khi nhấn nút này, cửa sổ sau sẽ hiện ra để có thể tùy biến hành vi Insert:
Ở trên, nếu bạn chọn chế độ mặc nhiên (“Use Runtime”) thì LINQ to SQL sẽ tính toán và sinh ra câu lệnh SQL động để thực hiện các thao tác tương ứng. Chúng ta có thể thay đổi bằng cách nhấn chuột vào Customize và chọn thủ tục InsertOrder từ danh sách các SPROC:
LINQ to SQL sẽ hiển thị các tham số của thủ tục mà ta đã chọn, và cho phép ánh xạ các thuộc tính của lớp Order và các tham số của InsertOrder. Mặc nhiên, LINQ to cũng tự động xác định các tham số tương ứng theo tên, tuy nhiên bạn vẫn có thể sửa lại nếu muốn.
Nhấn vào nút Ok là xong. Giờ đây bất cứ khi nào một đối tượng Order được thêm vào DataContext và phương thức SubmitChanges() được gọi, thủ tục InsertOrder sẽ được thực thi thay cho câu lệnh SQL động.
Quan trọng: Mặc dù hiện tại chúng ta đã dùng SPROC để cập nhật, phương thức “OnValidate” của Order mà chúng ta đã tạo trước đây (trong bước 1 của bài viết này) để kiểm tra tính hợp lệ của đối tượng Order sẽ vẫn được thực thi trước khi bất kỳ thay đổi nào được thực hiện. Do vậy chúng ta sẽ có một các rõ ràng để xử lý và kiểm tra các quy tắc, và có thể dùng lại một cách dễ dàng mà không phụ thuộc vào việc chúng ta dùng SQL động hay dùng SPROC.
**Bước 4: Thực hiện cập nhật dùng SPROC
**
Giờ chúng ta sẽ sửa lại đối tượng Customer để cho phép cập nhật bằng cách dùng SPROC.
Chúng ta sẽ bắt đầu bằng cách tạo một SPROC tên “UpdateCustomer” như dưới đây:
Chú ý ở trên, ngoài việc truyền giá trị cho tham số CustomerID, tôi cũng truyền một tham số khác có tên @Original_CustomerID. Cột CustomerID trong bảng Customers không phải là một cột tự tăng, và nó có thể được chỉnh sửa như một phần của thao tác cập nhật. Do vậy chúng ta sẽ phải truyền cả giá trị của CustomerID cũ và CustomerID mới để có thể cập nhật. Chúng ta sẽ xem cách ánh xạ các cột ngay sau đây.
Bạn sẽ thấy ở trên tôi đã truyền một tham số có tên @Version (có kiểu timestamp) vào cho SPROC. Đây là một cột tôi đã thêm vào bảng Customers để có thể xử lý việc tranh chấp khi các thao tác cập nhật được diễn ra đồng thời (optimistic concurrency). Tôi sẽ nói chi tiết hơn về việc xử lý tranh chấp này trong bài viết sau của loạt bài LINQ to SQL, nhưng tôi cũng nói luôn là LINQ to SQL hỗ trợ đầy đủ optimistic concurrency, và cho phép bạn có thể chọn dùng version timestamp hay bằng cách cung cấp cả giá trị cũ/mới cho SPROC để có thể xác định được các thay đổi được tạo ra bới người khác kể từ lần cuối bạn đọc dữ liệu. Trong ví dụ này tôi dùng timestamp vì nó giúp viết lệnh rõ ràng hơn.
Một khi đã tạo xong SPROC, bạn có thể kéo/thả nó vào cửa sổ LINQ to SQL designer để thêm nó như một phương thức trong lớp DataContext. Chúng ta có thể chọn lớp Customer trong cửa sổ thiết kế và nhấn vào nút … ở mục Update để dùng SPROC vừa tạo trong việc cập nhật lại dữ liệu trong bảng Customer:
Chúng ta sẽ chọn ô “Customize” và chọn để dùng UpdateCustomer:
Khi ánh xạ các thuộc tính của đối tượng Customer vào các tham số của SPROC, bạn sẽ được nhắc rằng bạn đang muốn gán các giá trị mới(Current) hay các giá trị gốc (Original) – là các giá trị mà bạn lấy về lần đầu từ CSDL. Ví dụ, bạn sẽ cần gán giá trị thuộc tính Customer.CustomerID “mới” vào cho tham số @CustomerID của SPROC, và Customer.CustomerID “gốc” vào cho @original_customerID.
Khi nhấn “Ok” trên ửa sổ này, bạn đã hoàn thành việc ánh xạ các tham số vào các thuộc tính. Từ giờ trở đi, mỗi khi cập nhật lại giá trị cho đối tượng Customer và gọi SubmitChanges(), thủ tục UpdateCustomer sẽ được gọi thay cho câu lệnh SQL động.
Quan trọng: Dù rằng hiện tại bạn đã dùng SPROC để cập nhật, phương thức “OnPhoneChanging()” mà chúng ta đã tạo trước đó (trong bước 1 của bài này) để xác thực số điện thoại vẫn được thực thi trước khi bất kỳ thay đổi nào được lưu lại hay “UpdateCustomer” được gọi. Chúng ta có một cách rõ ràng, sáng sủa để hiện thực hóa cá quy tắc xử lý cũng như xác thực dữ liệu, và có thể dùng chúng mà không phụ thuộc và việc chúng ta đang dùng câu lệnh SQL động hay SPROC.
**Bước 5: Dùng lớp DAL lần nữa**
Một khi đã cập nhật lớp truy cạp dữ liệu (DAL) để dùng SPROC thay vì câu lệnh SQL động, bạn có thể chạy lại các câu lệnh tương tự các câu lệnh ta đã làm ở bước 2 để làm việc với các lớp mô hình dữ liệu:
Giờ đây việc cập nhật đối tượng Customer, và việc thêm các đối tượng Order sẽ được thực thi thông qua thủ tục đã tạo thay vì dùng các câu SQL động. Các quy tắc kiểm tra cũng được thực thi hệt như trước đây, và các câu lệnh chúng ta đã dùng để sử dụng các lớp mô hình dữ liệu cũng hoàn toàn tương tự.
**Một số ưu điểm của việc dùng SPROC**
Sau đây là một vài ý nhỏ có thể có ích cho bạn trong việc dùng SPROC:
Dùng các tham số dạng output:
Trong phần 3 ở trên, tôi đã biểu diễn cách chúng ta có thể trả về giá trị OrderID mới được tạo (đây là một cột tự tăng trong CSDL) bằng cách dùng một tham số dạng output. Bạn sẽ không bị giới hạn trong việc trả về chỉ các cột tự tăng – mà thật sự bạn có thể trarveef các giá trị cho bất kỳ tham số nào của SPROC. Bạn có thể dùng cách tiếp cận này cho cả trường hợp Insert và Update. LINQ to SQL có thể lấy giá trị trả về và dùng nó để cập nhật giá trị của các thuộc tính của các đối tượng trong mô hình dữ liệu mà không cần thực thi thêm một câu truy vấn thứ 2 để lấy các giá trị đã được tạo ra.
Sẽ thế nào nếu một SPROC phát ra một lỗi?
Nếu một SPROC phát ra một lỗi khi thực hiện việc Insert/Update/Delete, LINQ to SQL sẽ tự động hủy và rollback toàn bộ các thay đổi đã tạo ra trong transaction kết hợp với lời gọi SubmitChanges(). Điều này đảm bảo rằng dữ liệu của bạn sẽ luôn trong trạng thái đúng đắn.
Tôi có thể viết code thay vì dung ORM designer để gọi SPROC?
Như đã nói trong phần đầu bài viết này, bạn có thể dùng LINQ to SQL designer để ánh xạ các thao tác thêm/sửa/xóa vào các SPROC, hoặc bạn cũng có thể thêm các phương thức partial vào lớp DataContext và viết lệnh gọi chúng. Đây là một ví dụ về cách viết các phương thức trong lớp partial của NorthwindDataContext dùng UpdateCustomer để gọi một thủ tục:
Đoạn lệnh ở trên thực ra chính là cái được tạo ra khi bạn dùng LINQ to SQL designer để ánh xạ SPROC và kết hợp nó với thao tác cập nhật đối tượng Customer. Bạn có thể xem nó như điểm khởi đầu và sau đó tiếp tục thêm bất kỳ lệnh xử lý nào bạn muốn (ví dụ: dùng giá trị trả về của SPROC để phát ra các exception tương ứng với mã lỗi nhận được, optimistic concurrency…).
**Tổng kết**
LINQ to SQL là một trình ánh xạ đối tượng (ORM) cực kỳ mềm dẻo. Nó cho phép bạn viết các đoạn code theo kiểu hướng đối tượng một cách rõ ràng, sang sủa để lấy, cập nhật hay thêm dữ liệu.
Hơn hết, nó cho phép bạn thiết kế các lớp mô hình dữ liệu mộ cách dễ dàng, không phụ thuộc vào cách nó được lưu hay nạp lại từ CSDL. Bạn có thêt dùng trình ORM xây dựng sẵn để lấy về hay cập nhật dữ liệu một cách hiệu quả bằng cách dùng các câu SQL động. Hoặc bạn cũng có thể cấu hình lớp dữ liệu để dùng SPROC. Điều hay là các đoạn lệnh của bạn để dùng lớp dữ liệu này, cũng như các thủ tục để kiểm tra logic đều không phụ thuộc vào cách lưu/nạp dữ liệu thực sự được dùng.
Trong bài tiếp theo của loạt bài này, tôi sẽ nói về một số khái niệm còn lại trong LINQ to SQL, bao gồm: Single Table Inheritance, Deferred/Eager Loading, Optimistic Concurrency, và xử lý trong các ngữ cảnh Multi-Tier.
Scott
*Các bạn đang xem bài viết trong loạt bài “LINQ to SQL”, loạt bài này được dịch từ blog ScottGu * *http://weblogs.asp.net/scottgu/*
## 6 thoughts on “Cập nhật dữ liệu dùng Stored Procedure (LINQ to SQL phần 7)”
Em chào thầy!
Em cũng đang tìm hiểu về linq bài học của thầy rất hay. Nhưng em ko tìm đựoc linq tải để cài đặt.
Nếu đựoc thầy update link cho em với nhé.
Em cảm ơn thầy nhìu
Linq đã có sẵn trong Visual Studio 2008 trở về sau.
Chào anh,em muốn thiết lập một mã tự động khi thêm vào nhưng hàm thêm em không dùng SPROC.vậy em muốn khi thêm vào mã tự động tăng em phải làm sao
Chào anh namdh và các bạn!
Em là người tự học C# nên cũng hơi kém, và cũng chỉ mới bắt đầu thôi.
Em đọc bài này thấy phương pháp dùng SP để cấu hình cập nhật dữ liệu trong LINQ to SQL có thể cập nhật được trường khóa chính (ID) ở dạng chuỗi (không phải số tăng tự động) khi truyền cả tham số ID cũ và mới cho SP (original_customerID và customerID ở trong bài).
Nhưng em làm vẫn không cập nhật được khi thay đổi trường khóa chính, khi thay đổi tham số Version ở 2 dạng current và Original đều báo lỗi như nhau là không thể thay đổi trường này được.
Em xin hỏi anh namdh và các bạn biết vấn đề này xin chỉ giúp, em đã search hơn 1 tuần rồi mà vẫn chưa làm được.
code: https://hotfile.com/dl/157651173/c23aa3b/fmdi.rar.html
Em xin cảm ơn trước!
chào thầy.em muốn viết 1 procedure để phân loại khách hàng như sau:căn cứ vào số lần đặt phòng của khách hàng trong table hoadon (trong table hoadon gồm có:maphieu,makh,tongtien,…;table khachhang gồm có:makh,tenkh…).nếu khách hàng đặt phòng trên 5 lần thì quy định là loại khách vip,còn dưới mức đó là khách thường.mong thầy có thể giúp em.em xin cám ơn.
dạ e chào thầy ạ. e muốn hỏi là mã của e là type varchar(10), em muốn khi insert bằng SP thì nó tự động tăng. ví dụ như lúc đầu sẽ là TK0000001 cứ tăng dần mỗi khi insert vào TK0000002, rồi TK0000003 đến TK999999 thì cách làm như thế nào ạ? à, nếu giả sử khi thêm vào là cùng 1 lúc thì sẽ kiểm tra ngày/giờ,phút/giây như thế nào để tránh mã bị trùng ạ?

Link: <http://wp.me/pgR1Z-cP>; rel=shortlink


text:
Thường tự xét lỗi mình, đừng nói lỗi người khác. Kinh Đại Bát Niết-bàn
Không làm các việc ác, thành tựu các hạnh lành, giữ tâm ý trong sạch, chính lời chư Phật dạy.Kinh Đại Bát Niết-bàn
Sự thành công thật đơn giản. Hãy thực hiện những điều đúng đắn theo phương cách đúng đắn và vào đúng thời điểm thích hợp. (Success is simple. Do what's right, the right way, at the right time.)Arnold H. Glasow
Đừng làm cho người khác những gì mà bạn sẽ tức giận nếu họ làm với bạn. (Do not do to others what angers you if done to you by others. )Socrates
Kẻ thù hại kẻ thù, oan gia hại oan gia, không bằng tâm hướng tà, gây ác cho tự thânKinh Pháp Cú (Kệ số 42)
Sự ngu ngốc có nghĩa là luôn lặp lại những việc làm như cũ nhưng lại chờ đợi những kết quả khác hơn. (Insanity: doing the same thing over and over again and expecting different results.)Albert Einstein
Sự giúp đỡ tốt nhất bạn có thể mang đến cho người khác là nâng đỡ tinh thần của họ. (The best kind of help you can give another person is to uplift their spirit.)Rubyanne
Thành công không phải là chìa khóa của hạnh phúc. Hạnh phúc là chìa khóa của thành công. Nếu bạn yêu thích công việc đang làm, bạn sẽ thành công. (Success is not the key to happiness. Happiness is the key to success. If you love what you are doing, you will be successful.)Albert Schweitzer
Điều khác biệt giữa sự ngu ngốc và thiên tài là: thiên tài vẫn luôn có giới hạn còn sự ngu ngốc thì không. (The difference between stupidity and genius is that genius has its limits.)Albert Einstein
Sự toàn thiện không thể đạt đến, nhưng nếu hướng theo sự toàn thiện, ta sẽ có được sự tuyệt vời. (Perfection is not attainable, but if we chase perfection we can catch excellence.)Vince Lombardi
Cho dù người ta có tin vào tôn giáo hay không, có tin vào sự tái sinh hay không, thì ai ai cũng đều phải trân trọng lòng tốt và tâm từ bi. (Whether one believes in a religion or not, and whether one believes in rebirth or not, there isn't anyone who doesn't appreciate kindness and compassion.)Đức Đạt-lai Lạt-ma XIV
Trang chủ »» Danh mục »» Đại từ điển Hán Việt »» Đang xem mục từ: sài hồ - 柴胡 »»
Chú ý: Nếu quý vị copy chữ Hán dán (paste) vào đây để tra thì kết quả sẽ chính xác hơn rất nhiều.
Quý vị cũng có thể bôi đen (select) những chữ Hán đã hiển thị trên màn hình rồi dùng chuột kéo thả vào khung để tra.
Tên một vị thuốc bắc. (Từ điển Nguyễn Quốc Hùng)
Quý vị đang truy cập từ IP 174.129.78.73 và chưa ghi danh hoặc đăng nhập trên máy tính này. Nếu là thành viên, quý vị chỉ cần đăng nhập một lần duy nhất trên thiết bị truy cập, bằng email và mật khẩu đã chọn.
Chúng tôi khuyến khích việc ghi danh thành viên để thuận tiện trong việc chia sẻ thông tin, chia sẻ kinh nghiệm sống giữa các thành viên, đồng thời quý vị cũng sẽ nhận được sự hỗ trợ kỹ thuật từ Ban Quản Trị trong quá trình sử dụng website này.
Việc ghi danh là hoàn toàn miễn phí và tự nguyện.
Ghi danh hoặc đăng nhập

markdown:
Thường tự xét lỗi mình, đừng nói lỗi người khác. Kinh Đại Bát Niết-bàn
Không làm các việc ác, thành tựu các hạnh lành, giữ tâm ý trong sạch, chính lời chư Phật dạy.Kinh Đại Bát Niết-bàn
Sự thành công thật đơn giản. Hãy thực hiện những điều đúng đắn theo phương cách đúng đắn và vào đúng thời điểm thích hợp. (Success is simple. Do what's right, the right way, at the right time.)Arnold H. Glasow
Đừng làm cho người khác những gì mà bạn sẽ tức giận nếu họ làm với bạn. (Do not do to others what angers you if done to you by others. )Socrates
Kẻ thù hại kẻ thù, oan gia hại oan gia, không bằng tâm hướng tà, gây ác cho tự thânKinh Pháp Cú (Kệ số 42)
Sự ngu ngốc có nghĩa là luôn lặp lại những việc làm như cũ nhưng lại chờ đợi những kết quả khác hơn. (Insanity: doing the same thing over and over again and expecting different results.)Albert Einstein
Sự giúp đỡ tốt nhất bạn có thể mang đến cho người khác là nâng đỡ tinh thần của họ. (The best kind of help you can give another person is to uplift their spirit.)Rubyanne
Thành công không phải là chìa khóa của hạnh phúc. Hạnh phúc là chìa khóa của thành công. Nếu bạn yêu thích công việc đang làm, bạn sẽ thành công. (Success is not the key to happiness. Happiness is the key to success. If you love what you are doing, you will be successful.)Albert Schweitzer
Điều khác biệt giữa sự ngu ngốc và thiên tài là: thiên tài vẫn luôn có giới hạn còn sự ngu ngốc thì không. (The difference between stupidity and genius is that genius has its limits.)Albert Einstein
Sự toàn thiện không thể đạt đến, nhưng nếu hướng theo sự toàn thiện, ta sẽ có được sự tuyệt vời. (Perfection is not attainable, but if we chase perfection we can catch excellence.)Vince Lombardi
Cho dù người ta có tin vào tôn giáo hay không, có tin vào sự tái sinh hay không, thì ai ai cũng đều phải trân trọng lòng tốt và tâm từ bi. (Whether one believes in a religion or not, and whether one believes in rebirth or not, there isn't anyone who doesn't appreciate kindness and compassion.)Đức Đạt-lai Lạt-ma XIV
[Trang chủ](Home.html) »»
[Danh mục](danh-muc_thu-vien_tongquat_rong-mo-tam-hon.html) »»
[Đại từ điển Hán Việt](tu-dien_han-viet_none_rong-mo-tam-hon.html) »»
Đang xem mục từ: sài hồ - 柴胡 »»
**Chú ý**: Nếu quý vị copy chữ Hán dán (paste) vào đây để tra thì kết quả sẽ chính xác hơn rất nhiều.
Quý vị cũng có thể bôi đen (select) những chữ Hán đã hiển thị trên màn hình rồi dùng chuột kéo thả vào khung để tra.
Tên một vị thuốc bắc. (
*Từ điển Nguyễn Quốc Hùng*) **Quý vị đang truy cập từ IP 174.129.78.73 và chưa ghi danh hoặc đăng nhập trên máy tính này. **Nếu là thành viên, quý vị chỉ cần đăng nhập một lần duy nhất trên thiết bị truy cập, bằng email và mật khẩu đã chọn.
Chúng tôi khuyến khích việc
**ghi danh thành viên **để thuận tiện trong việc chia sẻ thông tin, chia sẻ kinh nghiệm sống giữa các thành viên, đồng thời quý vị cũng sẽ nhận được sự hỗ trợ kỹ thuật từ Ban Quản Trị trong quá trình sử dụng website này.
** Việc ghi danh là hoàn toàn miễn phí và tự nguyện**.
Ghi danh hoặc đăng nhập


text:
Sống chạy theo vẻ đẹp, không hộ trì các căn, ăn uống thiếu tiết độ, biếng nhác, chẳng tinh cần; ma uy hiếp kẻ ấy, như cây yếu trước gió.Kinh Pháp cú (Kệ số 7)
Trong cuộc sống, điều quan trọng không phải bạn đang ở hoàn cảnh nào mà là bạn đang hướng đến mục đích gì. (The great thing in this world is not so much where you stand as in what direction you are moving. )Oliver Wendell Holmes
Việc đánh giá một con người qua những câu hỏi của người ấy dễ dàng hơn là qua những câu trả lời người ấy đưa ra. (It is easier to judge the mind of a man by his questions rather than his answers.)Pierre-Marc-Gaston de Lévis
Khi ý thức được rằng giá trị của cuộc sống nằm ở chỗ là chúng ta đang sống, ta sẽ thấy tất cả những điều khác đều trở nên nhỏ nhặt, vụn vặt không đáng kể.Tủ sách Rộng Mở Tâm Hồn
Những khách hàng khó tính nhất là người dạy cho bạn nhiều điều nhất. (Your most unhappy customers are your greatest source of learning.)Bill Gates
Cho dù người ta có tin vào tôn giáo hay không, có tin vào sự tái sinh hay không, thì ai ai cũng đều phải trân trọng lòng tốt và tâm từ bi. (Whether one believes in a religion or not, and whether one believes in rebirth or not, there isn't anyone who doesn't appreciate kindness and compassion.)Đức Đạt-lai Lạt-ma XIV
Chúng ta không thể đạt được sự bình an nơi thế giới bên ngoài khi chưa có sự bình an với chính bản thân mình. (We can never obtain peace in the outer world until we make peace with ourselves.)Đức Đạt-lai Lạt-ma XIV
Điều quan trọng không phải là bạn nhìn vào những gì, mà là bạn thấy được những gì. (It's not what you look at that matters, it's what you see.)Henry David Thoreau
Hạnh phúc không tạo thành bởi số lượng những gì ta có, mà từ mức độ vui hưởng cuộc sống của chúng ta. (It is not how much we have, but how much we enjoy, that makes happiness.)Charles Spurgeon
Trời sinh voi sinh cỏ, nhưng cỏ không mọc trước miệng voi. (God gives every bird a worm, but he does not throw it into the nest. )Ngạn ngữ Thụy Điển
Mục đích của đời sống là khám phá tài năng của bạn, công việc của một đời là phát triển tài năng, và ý nghĩa của cuộc đời là cống hiến tài năng ấy. (The purpose of life is to discover your gift. The work of life is to develop it. The meaning of life is to give your gift away.)David S. Viscott
Trang chủ »» Danh mục »» Đại từ điển Phật Quang »» Đang xem mục từ: nhị đoạn »»
Nếu muốn duyệt qua từng vần trong từ điển,
xin nhập vào ô dưới đây vần tương ứng. Ví dụ: A, B, C...
Quý vị đang truy cập từ IP 174.129.78.73 và chưa ghi danh hoặc đăng nhập trên máy tính này. Nếu là thành viên, quý vị chỉ cần đăng nhập một lần duy nhất trên thiết bị truy cập, bằng email và mật khẩu đã chọn.
Chúng tôi khuyến khích việc ghi danh thành viên để thuận tiện trong việc chia sẻ thông tin, chia sẻ kinh nghiệm sống giữa các thành viên, đồng thời quý vị cũng sẽ nhận được sự hỗ trợ kỹ thuật từ Ban Quản Trị trong quá trình sử dụng website này.
Việc ghi danh là hoàn toàn miễn phí và tự nguyện.
Ghi danh hoặc đăng nhập

markdown:
Sống chạy theo vẻ đẹp, không hộ trì các căn, ăn uống thiếu tiết độ, biếng nhác, chẳng tinh cần; ma uy hiếp kẻ ấy, như cây yếu trước gió.Kinh Pháp cú (Kệ số 7)
Trong cuộc sống, điều quan trọng không phải bạn đang ở hoàn cảnh nào mà là bạn đang hướng đến mục đích gì. (The great thing in this world is not so much where you stand as in what direction you are moving. )Oliver Wendell Holmes
Việc đánh giá một con người qua những câu hỏi của người ấy dễ dàng hơn là qua những câu trả lời người ấy đưa ra. (It is easier to judge the mind of a man by his questions rather than his answers.)Pierre-Marc-Gaston de Lévis
Khi ý thức được rằng giá trị của cuộc sống nằm ở chỗ là chúng ta đang sống, ta sẽ thấy tất cả những điều khác đều trở nên nhỏ nhặt, vụn vặt không đáng kể.Tủ sách Rộng Mở Tâm Hồn
Những khách hàng khó tính nhất là người dạy cho bạn nhiều điều nhất. (Your most unhappy customers are your greatest source of learning.)Bill Gates
Cho dù người ta có tin vào tôn giáo hay không, có tin vào sự tái sinh hay không, thì ai ai cũng đều phải trân trọng lòng tốt và tâm từ bi. (Whether one believes in a religion or not, and whether one believes in rebirth or not, there isn't anyone who doesn't appreciate kindness and compassion.)Đức Đạt-lai Lạt-ma XIV
Chúng ta không thể đạt được sự bình an nơi thế giới bên ngoài khi chưa có sự bình an với chính bản thân mình. (We can never obtain peace in the outer world until we make peace with ourselves.)Đức Đạt-lai Lạt-ma XIV
Điều quan trọng không phải là bạn nhìn vào những gì, mà là bạn thấy được những gì. (It's not what you look at that matters, it's what you see.)Henry David Thoreau
Hạnh phúc không tạo thành bởi số lượng những gì ta có, mà từ mức độ vui hưởng cuộc sống của chúng ta. (It is not how much we have, but how much we enjoy, that makes happiness.)Charles Spurgeon
Trời sinh voi sinh cỏ, nhưng cỏ không mọc trước miệng voi. (God gives every bird a worm, but he does not throw it into the nest. )Ngạn ngữ Thụy Điển
Mục đích của đời sống là khám phá tài năng của bạn, công việc của một đời là phát triển tài năng, và ý nghĩa của cuộc đời là cống hiến tài năng ấy. (The purpose of life is to discover your gift. The work of life is to develop it. The meaning of life is to give your gift away.)David S. Viscott
[Trang chủ](Home.html) »»
[Danh mục](danh-muc_thu-vien_tongquat_rong-mo-tam-hon.html) »»
[Đại từ điển Phật Quang](tu-dien_phat-quang_none_rong-mo-tam-hon.html) »»
Đang xem mục từ: nhị đoạn »»
Nếu muốn duyệt qua từng vần trong từ điển,
xin nhập vào ô dưới đây vần tương ứng. Ví dụ: A, B, C...
**Quý vị đang truy cập từ IP 174.129.78.73 và chưa ghi danh hoặc đăng nhập trên máy tính này. **Nếu là thành viên, quý vị chỉ cần đăng nhập một lần duy nhất trên thiết bị truy cập, bằng email và mật khẩu đã chọn.
Chúng tôi khuyến khích việc
**ghi danh thành viên **để thuận tiện trong việc chia sẻ thông tin, chia sẻ kinh nghiệm sống giữa các thành viên, đồng thời quý vị cũng sẽ nhận được sự hỗ trợ kỹ thuật từ Ban Quản Trị trong quá trình sử dụng website này.
** Việc ghi danh là hoàn toàn miễn phí và tự nguyện**.
Ghi danh hoặc đăng nhập


text:
Hầu hết mọi người đều tính sai đáp số
Trả lời câu hỏi và nhận giải thưởng là 1 thẻ điện thoại trị giá 100.000 VNĐ
Schoolbus

X-Powered-By-Plesk: PleskWin

X-Frame-Options: ALLOW-FROM https://apps.facebook.com


text:
Cần ae giúp đỡ về từ khóa đứng im.
Thảo luận trong 'Thảo Luận SEO Và Trợ Giúp SEO' bắt đầu bởi caohongquang1, 16/7/15.
- Trạng thái chủ đề:
- Không mở trả lời sau này.
- Trạng thái chủ đề:
- Không mở trả lời sau này.
Đang tải...
Thảo luận trong 'Thảo Luận SEO Và Trợ Giúp SEO' bắt đầu bởi caohongquang1, 16/7/15.

markdown:
# Cần ae giúp đỡ về từ khóa đứng im.
Thảo luận trong '
[Thảo Luận SEO Và Trợ Giúp SEO](forums/thao-luan-seo-va-tro-giup-seo.69/)' bắt đầu bởi [caohongquang1](members/caohongquang1.7513/), [16/7/15](threads/can-ae-giup-do-ve-tu-khoa-dung-im.399290/).
- Trạng thái chủ đề:
- Không mở trả lời sau này.
- Trạng thái chủ đề:
- Không mở trả lời sau này.
Đang tải...
Thảo luận trong '
[Thảo Luận SEO Và Trợ Giúp SEO](forums/thao-luan-seo-va-tro-giup-seo.69/)' bắt đầu bởi [caohongquang1](members/caohongquang1.7513/), [16/7/15](threads/can-ae-giup-do-ve-tu-khoa-dung-im.399290/).

Set-Cookie: xf_session=43ba044924c0bfdfc2f08ac41ab3204d; path=/; secure; httponly


text: Sau quá trình tìm hiểu SEO và tham gia nhiều buổi offline với các cao thủ trong ngành. Tôi nhận ra họ là những người rất tài năng trong nhiều lĩnh vực khác nhau. Nhưng có một điều khá thú vị, họ đều là những bậc thầy về vấn đề… cưa gái! Vì sao vậy? Sau khi tìm tòi, học hỏi, cũng như nghiên cứu ở nhiều nguồn khác nhau. Tôi dần dần hiểu ra vấn đề. Những cao thủ SEO là những bậc thầy chém gió, mỗi người một phong cách riêng nhưng đều có đặc điểm chung là có thể chém mọi lúc mọi nơi, trong mọi hoàn cảnh, với mọi tâm trạng. Dường như đó là nét đặc trưng của nghề này. Dạo quanh các diễn đàn, từ lớn đến nhỏ, từ tiếng tây sang tiếng ta, từ mạng xã hội đến blog đều có dấu chân của các anh ấy…Vâng, đó là một khả năng đặc biệt mà nghề SEO đã trui rèn cho họ. Nếu chỉ có chém gió giỏi thì chưa chắc đã “cưa gái” tốt, vì vậy họ không những biết cách nói chuyện mà còn rất am hiểu tâm lý. Do đâu có điều này? Câu trả lời hết sức bất ngờ…tất cả là nhờ Google. Để làm rõ vấn đề này, tôi xin phép được so sánh giữa việc SEO và “cưa gái”, hai vấn đề hoàn toàn khác nhau, nhưng nếu tinh ý, bạn sẽ nhận thấy điểm chung rất thú vị. Khi các bạn theo đuổi một cô gái, bạn luôn muốn biết cô ấy đang nghĩ gì, làm gì và muốn nắm bắt tất cả mọi hành động, cử chỉ dù là nhỏ nhặt nhất để có thể chiếm được cảm tình. Với Google cũng thế, Google là một cô gái năng động và luôn thay đổi. Là SEOer, ai cũng muốn biết Google đang nghĩ gì và sẽ làm gì để kịp thời ứng phó nhằm lấy thiện cảm. Một cô gái đẹp là một cô gái có nhiều người theo đuổi, một keyword hay là keyword được nhiều người SEO. Và để lọt vào mắt xanh của cô gái thì phải hội tụ đủ nhiều yếu tố : ngoại hình, tính cách, trình độ, cũng như mối quan hệ…. Tương tự, để Google đánh giá cao thì phải có những điều kiện: web thân thiện, nội dung hay, PageRank cao và có nhiều liên kết trỏ về…. Cũng giống như con gái, Google luôn thay đổi thất thường. Nhưng nếu ta hiểu vấn đề, thì những thay đổi đó là đương nhiên để lọc ra những kết quả thích hợp nhất. Và nếu hiểu được nguyên lý trong câu chuyện này, bạn sẽ không còn tốn thời gian với những câu hỏi đại loại: onpage hay offpage tốt hơn? liên kết như thế nào mới là chất lượng? Hãy SEO như bạn đang cưa gái. SEO là một nghệ thuật, đừng biến nó thành công thức.

Set-Cookie: xf_session=0b502b6eca93ee583a09eb843a0aecf5; path=/; secure; httponly