下列的例子是WebService方法多字段传参改为DataTable传参,解决数据库表结构变化后不用修改WebService(03不支持序列化,05才支持)
WebService代码

Code
using System;
using System.Data;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.ComponentModel;
using System.Data.OracleClient;
namespace UpmSearchWams
{
/// <summary>
/// SearchWams 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class SearchWams : System.Web.Services.WebService
{
private static string strConn = System.Configuration.ConfigurationSettings.AppSettings["DBConnString"].ToString();
OracleConnection dbconn = new OracleConnection(strConn);
/// <summary>
/// 判断是否有同一段时间请假
/// </summary>
/// <param name="staffNo"></param>
/// <param name="beginDate"></param>
/// <param name="endDate"></param>
/// <returns></returns>
[WebMethod(Description = "判断是否有同一段时间请假")]
public bool Search(string staffNo, string beginDate, string endDate)
{
bool IsInsert = false;
string Str = "";
return IsInsert;
}
/// <summary>
/// UPM插入考勤出差表方法
/// </summary>
/// <param name="Id">使用UPM唯一ID标识</param>
/// <param name="EmpId">出差人员工号</param>
/// <param name="StartDate">出差开始时间</param>
/// <param name="ShalfDay">出差开始时间上午或下午(可为空默认上午)</param>
/// <param name="EndDate">出差结束时间</param>
/// <param name="EhalfDay">出差结束时间上午或下午(可为空默认下午)</param>
/// <param name="NumDays">出差天数</param>
/// <param name="Title">职务、职称(科长、高级工程师,可为空)</param>
/// <param name="Whither">出差目的地(广州、北京、青岛、重庆)</param>
/// <param name="Vehicle">交通工具(飞机、汽车)</param>
/// <param name="Cause">出差原因(可空,最好填写)</param>
/// <param name="Type">类型(这个字段统一传‘出差’)</param>
/// <param name="Routing">行程表或行程安排(深圳-广州-北京-青岛-重庆-深圳,可为空)</param>
/// <param name="EndFeedBack">是否提醒审批人审批(Y/N,统一传递‘Y’)</param>
/// <param name="Inputer">填写人(统一传入‘[UPM]系统生成’)</param>
/// <param name="InputDate">填写时间</param>
/// <param name="Reason">来由(UPM同步数据,可为空)</param>
/// <param name="NextApprClass">下一审批人的级别S、B、D、M(S科级、B处级、D部门经理、M总经理部经理)</param>
/// <param name="NextAppr">下一级审批人,审批状态,这里状态有三种Y、C、P880107;(其中Y审批通过、C审批不同意、P880107;下级审批人员工号)</param>
/// <param name="WorkArrange">工作安排(可为空)</param>
/// <returns></returns>
[WebMethod(Description = "UPM插入考勤出差表方法参数传递")]
public bool UpmInsertWamsOld(string Id, string EmpId, string StartDate, string ShalfDay, string EndDate, string EhalfDay, string NumDays, string Title, string Whither, string Vehicle, string Cause, string Type, string Routing, string EndFeedBack, string Inputer, string InputDate, string Reason, string NextApprClass, string NextAppr, string WorkArrange)
{
bool IsInsert = false;
try
{
string sql = "";
sql = "insert into Wams.xbusinesstrip(BT_Id,BT_EmpId, BT_StartDate, BT_ShalfDay,BT_EndDate,";
sql += " BT_EhalfDay, BT_NumDays, BT_Title, BT_Whither, BT_Vehicle,BT_Cause,";
sql += " BT_Type, BT_Routing, BT_EndFeedBack, BT_Inputer, BT_InputDate,BT_Reason,";
sql += " BT_NextApprClass,BT_NextAppr,BT_WorkArrange)";
sql += " values(" + Id + ",'" + EmpId + "',to_date('" + StartDate + "','yyyy-MM-dd')";
sql += ",'" + ShalfDay + "',to_date('" + EndDate + "','yyyy-MM-dd')";
sql += ",'" + EhalfDay + "','" + NumDays + "','" + Title + "','" + Whither + "','" + Vehicle + "','" + Cause + "','" + Type + "','" + Routing + "','" + EndFeedBack + "'";
sql += ",'" + Inputer + "',to_date('" + InputDate + "','yyyy-MM-dd hh24:mi:ss')";
sql += ",'" + Reason + "','" + NextApprClass + "','" + NextAppr + "','" + WorkArrange + "'";
sql += ")";
dbconn.Open();
OracleCommand cmd = new OracleCommand(sql, dbconn);
cmd.ExecuteNonQuery();
IsInsert =true;
}
catch
{
IsInsert = false;
dbconn.Close();
}
return IsInsert;
}
/// <summary>
/// UPM插入考勤系统出差表
/// </summary>
/// <param name="uTable"></param>
/// <returns></returns>
[WebMethod(Description = "UPM插入考勤系统出差表DataTable传递")]
public bool UpmInsertWams(DataTable uTable)
{
bool IsInsert = false;
try
{
dbconn.Open();
string sqlstr = "select * from wams.xbusinesstrip";
OracleDataAdapter da = new OracleDataAdapter(sqlstr, dbconn);
OracleCommandBuilder commandBuilder = new OracleCommandBuilder(da);
da.InsertCommand = commandBuilder.GetInsertCommand();
da.Update(uTable);
uTable.AcceptChanges();
dbconn.Close();
}
catch
{
IsInsert = false;
dbconn.Close();
}
return IsInsert;
}
/// <summary>
/// UPM更新出差信息出差表
/// </summary>
/// <param name="uTable"></param>
/// <returns></returns>
[WebMethod(Description = "UPM更新考勤系统出差表DataTable传递")]
public bool UpmUpDateWams(DataTable uTable)
{
bool IsInsert = false;
try
{
dbconn.Open();
string sqlstr = "select * from wams.xbusinesstrip";
OracleDataAdapter da = new OracleDataAdapter(sqlstr, dbconn);
OracleCommandBuilder commandBuilder = new OracleCommandBuilder(da);
da.InsertCommand = commandBuilder.GetUpdateCommand();
da.Update(uTable);
uTable.AcceptChanges();
dbconn.Close();
}
catch
{
IsInsert = false;
dbconn.Close();
}
return IsInsert;
}
}
}
前台页面调用代码

Code
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OracleClient;
namespace UpmSearchWams
{
public partial class _Default : System.Web.UI.Page
{
private static string strConn = System.Configuration.ConfigurationSettings.AppSettings["DBConnString"].ToString();
OracleConnection dbconn = new OracleConnection(strConn);
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string sql = "insert into Wams.xbusinesstrip(BT_Id,BT_EmpId, BT_StartDate, BT_ShalfDay,BT_EndDate, BT_EhalfDay, BT_NumDays, BT_Title, BT_Whither, BT_Vehicle,BT_Cause, BT_Type, BT_Routing, BT_EndFeedBack, BT_Inputer, BT_InputDate,BT_Reason, BT_NextApprClass,BT_NextAppr,BT_WorkArrange) values(20092008123,'P950065',to_date('2009-08-10','yyyy-MM-dd'),'',to_date('2009-08-30','yyyy-MM-dd'),'','29','1','2','3','4','出差','','N','',to_date('','yyyy-MM-dd hh24:mi:ss'),'','B','PCITCOU','')";
OracleCommand ocmd = new OracleCommand(sql, dbconn);
OracleDataAdapter da = new OracleDataAdapter(ocmd);
DataSet ds = new DataSet();
da.Fill(ds,"test");
SearchWams sw = new SearchWams();
sw.UpmInsertWams(ds.Tables["test"]);
//sw.UpmInsertWamsOld()
}
protected void Button2_Click(object sender, EventArgs e)
{
string sql = "update Wams.xbusinesstrip set BT_EmpId='PCITZHZ' where BT_Id=2009200831";
OracleCommand ocmd = new OracleCommand(sql, dbconn);
OracleDataAdapter da = new OracleDataAdapter(ocmd);
DataSet ds = new DataSet();
da.Fill(ds, "test");
SearchWams sw = new SearchWams();
sw.UpmUpDateWams(ds.Tables["test"]);
}
}
}
WebService代码
using System;
using System.Data;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.ComponentModel;
using System.Data.OracleClient;
namespace UpmSearchWams
{
/// <summary>
/// SearchWams 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class SearchWams : System.Web.Services.WebService
{
private static string strConn = System.Configuration.ConfigurationSettings.AppSettings["DBConnString"].ToString();
OracleConnection dbconn = new OracleConnection(strConn);
/// <summary>
/// 判断是否有同一段时间请假
/// </summary>
/// <param name="staffNo"></param>
/// <param name="beginDate"></param>
/// <param name="endDate"></param>
/// <returns></returns>
[WebMethod(Description = "判断是否有同一段时间请假")]
public bool Search(string staffNo, string beginDate, string endDate)
{
bool IsInsert = false;
string Str = "";
return IsInsert;
}
/// <summary>
/// UPM插入考勤出差表方法
/// </summary>
/// <param name="Id">使用UPM唯一ID标识</param>
/// <param name="EmpId">出差人员工号</param>
/// <param name="StartDate">出差开始时间</param>
/// <param name="ShalfDay">出差开始时间上午或下午(可为空默认上午)</param>
/// <param name="EndDate">出差结束时间</param>
/// <param name="EhalfDay">出差结束时间上午或下午(可为空默认下午)</param>
/// <param name="NumDays">出差天数</param>
/// <param name="Title">职务、职称(科长、高级工程师,可为空)</param>
/// <param name="Whither">出差目的地(广州、北京、青岛、重庆)</param>
/// <param name="Vehicle">交通工具(飞机、汽车)</param>
/// <param name="Cause">出差原因(可空,最好填写)</param>
/// <param name="Type">类型(这个字段统一传‘出差’)</param>
/// <param name="Routing">行程表或行程安排(深圳-广州-北京-青岛-重庆-深圳,可为空)</param>
/// <param name="EndFeedBack">是否提醒审批人审批(Y/N,统一传递‘Y’)</param>
/// <param name="Inputer">填写人(统一传入‘[UPM]系统生成’)</param>
/// <param name="InputDate">填写时间</param>
/// <param name="Reason">来由(UPM同步数据,可为空)</param>
/// <param name="NextApprClass">下一审批人的级别S、B、D、M(S科级、B处级、D部门经理、M总经理部经理)</param>
/// <param name="NextAppr">下一级审批人,审批状态,这里状态有三种Y、C、P880107;(其中Y审批通过、C审批不同意、P880107;下级审批人员工号)</param>
/// <param name="WorkArrange">工作安排(可为空)</param>
/// <returns></returns>
[WebMethod(Description = "UPM插入考勤出差表方法参数传递")]
public bool UpmInsertWamsOld(string Id, string EmpId, string StartDate, string ShalfDay, string EndDate, string EhalfDay, string NumDays, string Title, string Whither, string Vehicle, string Cause, string Type, string Routing, string EndFeedBack, string Inputer, string InputDate, string Reason, string NextApprClass, string NextAppr, string WorkArrange)
{
bool IsInsert = false;
try
{
string sql = "";
sql = "insert into Wams.xbusinesstrip(BT_Id,BT_EmpId, BT_StartDate, BT_ShalfDay,BT_EndDate,";
sql += " BT_EhalfDay, BT_NumDays, BT_Title, BT_Whither, BT_Vehicle,BT_Cause,";
sql += " BT_Type, BT_Routing, BT_EndFeedBack, BT_Inputer, BT_InputDate,BT_Reason,";
sql += " BT_NextApprClass,BT_NextAppr,BT_WorkArrange)";
sql += " values(" + Id + ",'" + EmpId + "',to_date('" + StartDate + "','yyyy-MM-dd')";
sql += ",'" + ShalfDay + "',to_date('" + EndDate + "','yyyy-MM-dd')";
sql += ",'" + EhalfDay + "','" + NumDays + "','" + Title + "','" + Whither + "','" + Vehicle + "','" + Cause + "','" + Type + "','" + Routing + "','" + EndFeedBack + "'";
sql += ",'" + Inputer + "',to_date('" + InputDate + "','yyyy-MM-dd hh24:mi:ss')";
sql += ",'" + Reason + "','" + NextApprClass + "','" + NextAppr + "','" + WorkArrange + "'";
sql += ")";
dbconn.Open();
OracleCommand cmd = new OracleCommand(sql, dbconn);
cmd.ExecuteNonQuery();
IsInsert =true;
}
catch
{
IsInsert = false;
dbconn.Close();
}
return IsInsert;
}
/// <summary>
/// UPM插入考勤系统出差表
/// </summary>
/// <param name="uTable"></param>
/// <returns></returns>
[WebMethod(Description = "UPM插入考勤系统出差表DataTable传递")]
public bool UpmInsertWams(DataTable uTable)
{
bool IsInsert = false;
try
{
dbconn.Open();
string sqlstr = "select * from wams.xbusinesstrip";
OracleDataAdapter da = new OracleDataAdapter(sqlstr, dbconn);
OracleCommandBuilder commandBuilder = new OracleCommandBuilder(da);
da.InsertCommand = commandBuilder.GetInsertCommand();
da.Update(uTable);
uTable.AcceptChanges();
dbconn.Close();
}
catch
{
IsInsert = false;
dbconn.Close();
}
return IsInsert;
}
/// <summary>
/// UPM更新出差信息出差表
/// </summary>
/// <param name="uTable"></param>
/// <returns></returns>
[WebMethod(Description = "UPM更新考勤系统出差表DataTable传递")]
public bool UpmUpDateWams(DataTable uTable)
{
bool IsInsert = false;
try
{
dbconn.Open();
string sqlstr = "select * from wams.xbusinesstrip";
OracleDataAdapter da = new OracleDataAdapter(sqlstr, dbconn);
OracleCommandBuilder commandBuilder = new OracleCommandBuilder(da);
da.InsertCommand = commandBuilder.GetUpdateCommand();
da.Update(uTable);
uTable.AcceptChanges();
dbconn.Close();
}
catch
{
IsInsert = false;
dbconn.Close();
}
return IsInsert;
}
}
}
前台页面调用代码
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.OracleClient;
namespace UpmSearchWams
{
public partial class _Default : System.Web.UI.Page
{
private static string strConn = System.Configuration.ConfigurationSettings.AppSettings["DBConnString"].ToString();
OracleConnection dbconn = new OracleConnection(strConn);
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string sql = "insert into Wams.xbusinesstrip(BT_Id,BT_EmpId, BT_StartDate, BT_ShalfDay,BT_EndDate, BT_EhalfDay, BT_NumDays, BT_Title, BT_Whither, BT_Vehicle,BT_Cause, BT_Type, BT_Routing, BT_EndFeedBack, BT_Inputer, BT_InputDate,BT_Reason, BT_NextApprClass,BT_NextAppr,BT_WorkArrange) values(20092008123,'P950065',to_date('2009-08-10','yyyy-MM-dd'),'',to_date('2009-08-30','yyyy-MM-dd'),'','29','1','2','3','4','出差','','N','',to_date('','yyyy-MM-dd hh24:mi:ss'),'','B','PCITCOU','')";
OracleCommand ocmd = new OracleCommand(sql, dbconn);
OracleDataAdapter da = new OracleDataAdapter(ocmd);
DataSet ds = new DataSet();
da.Fill(ds,"test");
SearchWams sw = new SearchWams();
sw.UpmInsertWams(ds.Tables["test"]);
//sw.UpmInsertWamsOld()
}
protected void Button2_Click(object sender, EventArgs e)
{
string sql = "update Wams.xbusinesstrip set BT_EmpId='PCITZHZ' where BT_Id=2009200831";
OracleCommand ocmd = new OracleCommand(sql, dbconn);
OracleDataAdapter da = new OracleDataAdapter(ocmd);
DataSet ds = new DataSet();
da.Fill(ds, "test");
SearchWams sw = new SearchWams();
sw.UpmUpDateWams(ds.Tables["test"]);
}
}
}
浙公网安备 33010602011771号