使用webservice操作强类型数据集时的注意事项
2015-02-06 19:18
309 查看
使用WebService和强类型数据集进行数据操作 作者野人,转载注明出处
首先我推荐使用.NET提供的强类型数据集,理由最少有5个:
1、对象化数据访问
2、强制类型检查
3、可视化
4、减免代码的快速开发
5、自动控件绑定
步骤如下:
WebService端
1、建立WebService
2、建立强类型数据集项
3、建立填充数据集的方法和供调用的WebMethod,包括数据读取的提供和数据操作等
4、将做好的WebService发布到网站上
Client端
1、建立访问界面,Winform或ASP.NET
2、引用WebService,注意调试WebService后需要“更新引用”
3、调用引用的WebService的命名空间建立本地强类型数据集项,这个数据集类型因为是WebService端提供的,所以和WebService建立的完全一致
4、用WebService提供的WebMethod方法,从WebService调用数据,并填充到本地数据集,注意要在得到table后加上Copy()方法,就是引入一个副本,加入到本地的数据集里面
5、注意在用本地数据集table更新服务器端数据后,需要加上本地table.AcceptChanges()方法,以刷新本地数据,其实就是重新读入服务器端数据集,避免出现连续提交更新方法的并发错误
WebService端代码
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
namespace WebService1
{
/// <summary>
/// Service1 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class Service1 : System.Web.Services.WebService
{
public static ProductDataSetTableAdapters.ProductTableAdapter productTA = new WebService1.ProductDataSetTableAdapters.ProductTableAdapter();
public static ProductDataSet productDS = new ProductDataSet();
[WebMethod]
public ProductDataSet GetProduct()
{
productTA.Fill(productDS.Product);
return productDS;
}
[WebMethod]
public int UpdateProduct(ProductDataSet.ProductDataTable dt)
{
int row;
row = productTA.Update(dt);
return row;
}
}
}
Client端代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Web;
using WindowsFormsApplication1.localhost;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
service1 = new Service1(); //在构造函数里面实例化WebService代理对象
}
Private Service1 service1;
Private ProductDataSet ds1;
Private ProductDataSet.ProductDataTable dt;
private void btnGetDate_Click(object sender, EventArgs e)
{
try
{
//取得WebService数据
dt = (ProductDataSet.ProductDataTable)service1.GetProduct().Tables[0].Copy();
这里不用复制,直接引用,应该是:
dt = (ProductionDataSet.ProductDataTable)service1.GetProduct().Tables[0];
dataGridView1.DataSource = dt;
}
catch (Exception)
{
MessageBox.Show("WebService服务器连接失败");
}
}
private void btnUpdate_Click(object sender, EventArgs e)
{
try
{
int rowChanged = service1.UpdateProduct(dt);//更新服务器端数据,返回被更改的记录数
if (rowChanged > 0)
{
MessageBox.Show(rowChanged + "行数据被更新成功。");
}
else
{
MessageBox.Show("没有需要更新的本地数据");
}
}
catch (Exception)
{
MessageBox.Show("服务器端更新失败。");
}
dt.AcceptChanges();//确认本地表数据更改
}
}
}
首先我推荐使用.NET提供的强类型数据集,理由最少有5个:
1、对象化数据访问
2、强制类型检查
3、可视化
4、减免代码的快速开发
5、自动控件绑定
步骤如下:
WebService端
1、建立WebService
2、建立强类型数据集项
3、建立填充数据集的方法和供调用的WebMethod,包括数据读取的提供和数据操作等
4、将做好的WebService发布到网站上
Client端
1、建立访问界面,Winform或ASP.NET
2、引用WebService,注意调试WebService后需要“更新引用”
3、调用引用的WebService的命名空间建立本地强类型数据集项,这个数据集类型因为是WebService端提供的,所以和WebService建立的完全一致
4、用WebService提供的WebMethod方法,从WebService调用数据,并填充到本地数据集,注意要在得到table后加上Copy()方法,就是引入一个副本,加入到本地的数据集里面
5、注意在用本地数据集table更新服务器端数据后,需要加上本地table.AcceptChanges()方法,以刷新本地数据,其实就是重新读入服务器端数据集,避免出现连续提交更新方法的并发错误
WebService端代码
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
namespace WebService1
{
/// <summary>
/// Service1 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class Service1 : System.Web.Services.WebService
{
public static ProductDataSetTableAdapters.ProductTableAdapter productTA = new WebService1.ProductDataSetTableAdapters.ProductTableAdapter();
public static ProductDataSet productDS = new ProductDataSet();
[WebMethod]
public ProductDataSet GetProduct()
{
productTA.Fill(productDS.Product);
return productDS;
}
[WebMethod]
public int UpdateProduct(ProductDataSet.ProductDataTable dt)
{
int row;
row = productTA.Update(dt);
return row;
}
}
}
Client端代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Web;
using WindowsFormsApplication1.localhost;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
service1 = new Service1(); //在构造函数里面实例化WebService代理对象
}
Private Service1 service1;
Private ProductDataSet ds1;
Private ProductDataSet.ProductDataTable dt;
private void btnGetDate_Click(object sender, EventArgs e)
{
try
{
//取得WebService数据
dt = (ProductDataSet.ProductDataTable)service1.GetProduct().Tables[0].Copy();
这里不用复制,直接引用,应该是:
dt = (ProductionDataSet.ProductDataTable)service1.GetProduct().Tables[0];
dataGridView1.DataSource = dt;
}
catch (Exception)
{
MessageBox.Show("WebService服务器连接失败");
}
}
private void btnUpdate_Click(object sender, EventArgs e)
{
try
{
int rowChanged = service1.UpdateProduct(dt);//更新服务器端数据,返回被更改的记录数
if (rowChanged > 0)
{
MessageBox.Show(rowChanged + "行数据被更新成功。");
}
else
{
MessageBox.Show("没有需要更新的本地数据");
}
}
catch (Exception)
{
MessageBox.Show("服务器端更新失败。");
}
dt.AcceptChanges();//确认本地表数据更改
}
}
}
相关文章推荐
- 使用webService时,gsoap数据类型注意事项
- 使用webService时,gsoap数据类型注意事项
- 在oracle中字段类型LONG的使用注意事项
- 在oracle中字段类型LONG的使用注意事项
- 使用Apache Pig时应该注意/避免的操作或事项
- 【转】二叉树的实现及操作以及指针使用和删除注意事项
- 常用sql命令@oracle数据类型概括@权限、角色、用户的创建于使用@伪列及其注意事项
- 在oracle中字段类型LONG的使用注意事项
- C# 使用DateTimePicker与数据库中类型为datetime的数据作比较的一些注意事项
- c++中const类型的使用与注意事项
- EF环境下使用数据库自增主键时异步操作的注意事项
- Hibernate使用sql语句查询,返回实体类型的方法及注意事项
- 使用php webservice(SOAP)的注意事项
- 使用poi操作Excel的几点注意事项
- 使用VS2012开发的网站或者webservice在IIS6.0上发布的注意事项
- 在oracle中字段类型LONG的使用注意事项
- 常用sql命令@oracle数据类型概括@权限、角色、用户的创建于使用@伪列及其注意事项
- 使用poi操作Excel的几点注意事项
- 在oracle中字段类型LONG的使用注意事项
- 使用VS2012开发的网站或者webservice在IIS6.0上发布的注意事项