Sử dụng webservice như một datasource

Bạn muốn sử dụng web service như một datasource cho ứng dụng của mình!

Giải pháp: Tạo một web service trả về một dataset và gọi phương thức đó ở client

Cách thực hiện (step by step)

Bước 1: Tạo 1 webservice đặt tên tùy ý, ở đây mình đặt là DemoWebservice

Capture

Bước 2: Trong App_Code/Service.cs bạn gõ vào đoạn code sau


[WebMethod]
public DataSet GetDataSet(string sql) {
SqlConnection con = new SqlConnection("Data Source=nguyenvanthanh;Initial Catalog=Demo;Integrated Security=True");
SqlDataAdapter ad=new SqlDataAdapter(sql,con);
DataSet ds=new DataSet();
ad.Fill(ds, "table1");
ad.Dispose();
return ds;
}

Chạy chương trình và bạn được như hình sau:

Capture

Bạn cứ để đó và tiếp tục làm nhé.

Bước 3: Mở thêm 1 cửa sổ Visual Studio mới vào tạo một ứng dụng Windows Form Application

- Kéo vào form 1 DataGridview

Bước 4: Tham chiếu tới web service, bạn làm từng bước 1 theo các hình sau:

Kích phải vào project ở solution explorer và chọn Add Service Reference…1

Copy địa chỉ của web service ở project trước vào ô Address rồi ấn go, ta được như hình sau:

2

Ta thấy có phương thức GetDataSet ở bên ô Operations. Ấn OK.

Bước 5: Tạo đối tượng vào sử dụng

Mình làm đơn giản như sau. Tại sự kiện formload bạn gõ vào đoạn code sau:


ServiceReference1.ServiceSoapClient sv=new ServiceSoapClient();
dataGridView1.DataSource = sv.GetDataSet("Select * from sinhvien").Tables[0];

Chạy chương trình và bạn sẽ thấy kết quả được hiển thị trên datagridview là danh sách tất cả sinh viên có trong bảng sinh viên.

Để thêm, xóa, sửa, bạn cũng viết thêm các web method trong webservice để thực hiện điều này. đó chình là phương thức Executenonquery(string sql) mà mình hay làm đó. Sau đó các bạn cũng gọi tương tự là được.

Khi bạn public web service này lên IIS của máy thì mỗi khi cần dùng chỉ cần gọi đường dẫn http://localhost/DemoWebservice/Service.asmx là có thể sử dụng được cho ứng dụng của mình.

Chúc các bạn thành công!

2 nhận xét:

suzuke169 nói...

Vậy khi đưa project sang máy khách mình sẽ cấu hình lại như thế nào?

Nguyễn Văn Sỹ nói...

cảm ơn bạn đã chia sẻ kiến thức, rất hay ạ