过两天把内容全部贴上,现在还没写完!不好意思啊!
这是我学习WEB Service 时做测试用的(C#),代码都成功运行,但漏洞是肯定有的了,不过对与初学者来说真的满实用的现在先把服务器端的代码贴上,客户端的就不用我再贴了吧,直接调用就是了!
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
using System.Data.OleDb;
using System.Data.Common;
using System.Xml;
using System.Text;
using System.IO;
namespace WebService
{
/// <summary>
/// Service1 的摘要说明。
/// </summary>
public class Service : System.Web.Services.WebService
{
public Service()
{
//CODEGEN: 该调用是 ASP.NET Web 服务设计器所必需的
InitializeComponent();
}
// string constr=@"Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database Locking Mode=1;Data Source=""C:/Inetpub/wwwroot/WS/database.mdb"";Mode=Share Deny None;Jet OLEDB:Engine Type=5;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet OLEDB:SFP=False;persist security info=False;Extended Properties=;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1";
private System.Data.OleDb.OleDbConnection Connection;
private System.Data.OleDb.OleDbCommand Command;
private System.Data.OleDb.OleDbCommand oleDbSelectCommand1;
private System.Data.OleDb.OleDbCommand oleDbInsertCommand1;
private System.Data.OleDb.OleDbCommand oleDbUpdateCommand1;
private System.Data.OleDb.OleDbCommand oleDbDeleteCommand1;
private System.Data.OleDb.OleDbDataAdapter DataAdapter;
#region 组件设计器生成的代码
//Web 服务设计器所必需的
private IContainer components = null;
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Connection = new System.Data.OleDb.OleDbConnection();
this.Command = new System.Data.OleDb.OleDbCommand();
this.oleDbSelectCommand1 = new System.Data.OleDb.OleDbCommand();
this.oleDbInsertCommand1 = new System.Data.OleDb.OleDbCommand();
this.oleDbUpdateCommand1 = new System.Data.OleDb.OleDbCommand();
this.oleDbDeleteCommand1 = new System.Data.OleDb.OleDbCommand();
this.DataAdapter = new System.Data.OleDb.OleDbDataAdapter();
//
// Connection
//
this.Connection.ConnectionString = @"Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database Locking Mode=1;Data Source=""C:/Inetpub/wwwroot/WebService/database.mdb"";Mode=Share Deny None;Jet OLEDB:Engine Type=5;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet OLEDB:SFP=False;persist security info=False;Extended Properties=;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1";
//
// Command
//
this.Command.Connection = this.Connection;
//
// DataAdapter
//
this.DataAdapter.DeleteCommand = this.oleDbDeleteCommand1;
this.DataAdapter.InsertCommand = this.oleDbInsertCommand1;
this.DataAdapter.SelectCommand = this.oleDbSelectCommand1;
this.DataAdapter.UpdateCommand = this.oleDbUpdateCommand1;
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if(disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
#endregion
// WEB 服务示例
// HelloWorld() 示例服务返回字符串 Hello World
// 若要生成,请取消注释下列行,然后保存并生成项目
// 若要测试此 Web 服务,请按 F5 键
// [WebMethod]
// public string HelloWorld()
// {
// return "Hello World";
// }
private string str_error;
[WebMethod(Description="用户登陆时检测用户名和密码")]
public bool Check_User(string SQLstr)
{
OleDbConnection cn;
cn=new OleDbConnection(this.Connection.ConnectionString);
OleDbCommand command=new OleDbCommand();
command.CommandText=SQLstr;
command.Connection=cn;
bool result = false;
cn.Open();
try
{
OleDbDataReader MyAdapter=command.ExecuteReader();
if(MyAdapter.Read())
result=true;
else
result=false;
cn.Close ();
}
catch(Exception e)
{
str_error=e.ToString();
}
return result;
}
[WebMethod(Description="得到当前(datainfo)入库数据的XML.")]
public XmlDataDocument Get_currentmondata_xml()
{
XmlDataDocument xd=new XmlDataDocument();
OleDbConnection cn;
cn=new OleDbConnection(this.Connection.ConnectionString);
string strSel="select ID as 单号,pnum as 票号,name as 货品名称,danwei as 单位,price as 单价,numbers as 数量,style as 类型,worker as 经手人,maker as 制单者,jdate as 进货日期,rdate as 入库日期,beizhu as 备注 ,price*numbers as 总金额 from datainfo order by ID";
try
{
cn.Open();
OleDbDataAdapter MyAdapter=new OleDbDataAdapter(strSel,this.Connection.ConnectionString);
DataSet ds=new DataSet();
MyAdapter.Fill(ds,"productdata");
xd=new XmlDataDocument(ds);
cn.Close();
}
catch(Exception e)
{
//错误
str_error=e.ToString();
}
return xd;
}
[WebMethod(Description="从moredatainfo表中得到当前某一次入库数据的详细XML.")]
public XmlDataDocument Get_currentmonmoredata_xml(string strnum)
{
XmlDataDocument xd=new XmlDataDocument();
OleDbConnection cn;
if(strnum=="")
return xd;
cn=new OleDbConnection(this.Connection.ConnectionString);
string strSel="select pnum as 票号,name as 货品名称,danwei as 单位,price as 单价,numbers as 数量,style as 类型,worker as 经手人,maker as 制单者,jdate as 进货日期,rdate as 入库日期,beizhu as 备注 from moredatainfo where ID='"+strnum+"'";
try
{
cn.Open();
OleDbDataAdapter MyAdapter=new OleDbDataAdapter(strSel,this.Connection.ConnectionString);
DataSet ds=new DataSet();
MyAdapter.Fill(ds,"moreproductdata");
xd=new XmlDataDocument(ds);
cn.Close();
}
catch(Exception e)
{
//错误
str_error=e.ToString();
}
return xd;
}
[WebMethod(Description="根据时间获取从datainfo表中得到查询数据的XML.")]
public XmlDataDocument Get_search_data_xml(string str_fdate,string str_tdate)
{
XmlDataDocument xd=new XmlDataDocument();
OleDbConnection cn;
cn=new OleDbConnection(this.Connection.ConnectionString);
string strSel="select ID as 单号,pnum as 票号,name as 货品名称,danwei as 单位,price as 单价,numbers as 数量,style as 类型,worker as 经手人,maker as 制单者,jdate as 进货日期,rdate as 入库日期,beizhu as 备注 from datainfo";
strSel += " where jdate Between #"+str_fdate+"# and #"+str_tdate+"#";
try
{
cn.Open();
OleDbDataAdapter MyAdapter=new OleDbDataAdapter(strSel,this.Connection.ConnectionString);
DataSet ds=new DataSet();
MyAdapter.Fill(ds,"productdata");
xd=new XmlDataDocument(ds);
cn.Close();
}
catch(Exception e)
{
//错误
str_error=e.ToString();
}
return xd;
}
[WebMethod(Description="删除(datainfo表)数据后的数据的XML")]
public XmlDataDocument Delte_data(string ID)
{
XmlDataDocument xd=new XmlDataDocument();
OleDbConnection cn;
cn=new OleDbConnection(this.Connection.ConnectionString);
string strSel="delete from datainfo where ID='"+ID+"'";
try
{
cn.Open();
//删除datainfo表
OleDbDataAdapter MyAdapterdelete=new OleDbDataAdapter(strSel,this.Connection.ConnectionString);
DataSet ds=new DataSet();
MyAdapterdelete.Fill(ds,"productdata");
//删除moredatainfo表对应的信息
strSel="delete from moredatainfo where ID='"+ID+"'";
OleDbDataAdapter MyAdapterdeletechild=new OleDbDataAdapter(strSel,this.Connection.ConnectionString);
MyAdapterdeletechild.Fill(ds,"productdata");
//查询删除后的数据
strSel="select ID as 单号,pnum as 票号,name as 货品名称,danwei as 单位,price as 单价,numbers as 数量,style as 类型,worker as 经手人,maker as 制单者,jdate as 进货日期,rdate as 入库日期,beizhu as 备注 from datainfo";
OleDbDataAdapter MyAdapter=new OleDbDataAdapter(strSel,this.Connection.ConnectionString);
ds.Clear();
MyAdapter.Fill(ds,"productdata");
xd=new XmlDataDocument(ds);
cn.Close();
}
catch(Exception e)
{
//错误
str_error=e.ToString();
}
return xd;
}
[WebMethod(Description="删除(moredatainfo表)详细数据后的数据的XML")]
public XmlDataDocument Delte_more_data(string num,string ID)
{
XmlDataDocument xd=new XmlDataDocument();
OleDbConnection cn;
cn=new OleDbConnection(this.Connection.ConnectionString);
string strSel="delete from moredatainfo where pnum='"+num+"'";
try
{
cn.Open();
//删除moredatainfo表
OleDbDataAdapter MyAdapterdelete=new OleDbDataAdapter(strSel,this.Connection.ConnectionString);
DataSet ds=new DataSet();
MyAdapterdelete.Fill(ds,"productdata");
//查询删除后的数据
strSel="select pnum as 票号,name as 货品名称,danwei as 单位,price as 单价,numbers as 数量,style as 类型,worker as 经手人,maker as 制单者,jdate as 进货日期,rdate as 入库日期,beizhu as 备注 from moredatainfo where ID='"+ID+"'";
OleDbDataAdapter MyAdapter=new OleDbDataAdapter(strSel,this.Connection.ConnectionString);
ds.Clear();
MyAdapter.Fill(ds,"moreproductdata");
xd=new XmlDataDocument(ds);
cn.Close();
}
catch(Exception e)
{
//错误
str_error=e.ToString();
}
return xd;
}
[WebMethod(Description="添加(moredatainfo表)的处理过程")]
public int Add_more_data(string xmlStream )
{
if(xmlStream == null || xmlStream.Trim().Length == 0)
{
return 0;
}
StringReader reader = new StringReader(xmlStream);
XmlTextReader xmlReader = new XmlTextReader(reader);
DataSet ds = new DataSet();
try
{
ds.ReadXml(xmlReader);
}
finally
{
reader.Close();
xmlReader.Close();
}
string SQLstr="";
for(int i=0;i<ds.Tables[0].Rows.Count;i++)
{
SQLstr="insert into moredatainfo (ID,pnum,name,danwei,price,numbers,style,worker,maker,jdate,rdate,beizhu )";
SQLstr += "values('"+ds.Tables[0].Rows[i][0].ToString()+"','"+ds.Tables[0].Rows[i][1].ToString()+"','"+ds.Tables[0].Rows[i][2].ToString()+"','";
SQLstr += ds.Tables[0].Rows[i][3].ToString()+"','"+ds.Tables[0].Rows[i][4].ToString()+"','"+ds.Tables[0].Rows[i][5].ToString()+"','"+ds.Tables[0].Rows[i][6].ToString()+"','";
SQLstr += ds.Tables[0].Rows[i][7].ToString()+"','"+ds.Tables[0].Rows[i][8].ToString()+"','"+ds.Tables[0].Rows[i][9].ToString()+"','"+ds.Tables[0].Rows[i][10].ToString()+"','";
SQLstr += ds.Tables[0].Rows[i][11].ToString()+"')";
OleDbConnection cn;
cn=new OleDbConnection(this.Connection.ConnectionString);
OleDbCommand insertcommand = new OleDbCommand (SQLstr,cn);
try
{
cn.Open();
insertcommand.ExecuteNonQuery();
cn.Close();
}
catch(Exception e)
{
//错误
str_error=e.ToString();
}
}
return ds.Tables[0].Rows.Count;
}
[WebMethod(Description="修改(moredatainfo表)的处理过程")]
public string Modify_more_data(string xmlStream )
{
if(xmlStream == null || xmlStream.Trim().Length == 0)
{
return "";
}
StringReader reader = new StringReader(xmlStream);
XmlTextReader xmlReader = new XmlTextReader(reader);
DataSet ds = new DataSet();
try
{
ds.ReadXml(xmlReader);
}
finally
{
reader.Close();
xmlReader.Close();
}
string SQLstr="";
for(int i=0;i<ds.Tables[0].Rows.Count;i++)
{
SQLstr="update moredatainfo set name = '"+ds.Tables[0].Rows[i][2].ToString()+"',danwei = '"+ds.Tables[0].Rows[i][3].ToString()+"',";
SQLstr += "price = '"+ds.Tables[0].Rows[i][4].ToString()+"',numbers = '"+ds.Tables[0].Rows[i][5].ToString()+"',style = '"+ds.Tables[0].Rows[i][6].ToString()+"',";
SQLstr += "worker = '"+ds.Tables[0].Rows[i][7].ToString()+"',maker = '"+ds.Tables[0].Rows[i][8].ToString()+"',jdate = '"+ds.Tables[0].Rows[i][9].ToString()+"',rdate = '"+ds.Tables[0].Rows[i][10].ToString()+"',beizhu = '"+ds.Tables[0].Rows[i]["备注"].ToString()+"'";
SQLstr += " where ID = '"+ds.Tables[0].Rows[i]["ID"].ToString();
SQLstr += "' and pnum = '"+ds.Tables[0].Rows[i]["票号"].ToString()+"'";
OleDbConnection cn;
cn=new OleDbConnection(this.Connection.ConnectionString);
OleDbCommand updatecommand = new OleDbCommand (SQLstr,cn);
try
{
cn.Open();
updatecommand.ExecuteNonQuery();
cn.Close();
}
catch(Exception e)
{
//错误
str_error=e.ToString();
}
}
// return ds.Tables[0].Rows.Count;
return SQLstr;
}
[WebMethod(Description="得到当前(saledata)出库数据的XML.")]
public XmlDataDocument Get_saledata_xml()
{
XmlDataDocument xd=new XmlDataDocument();
OleDbConnection cn;
cn=new OleDbConnection(this.Connection.ConnectionString);
string strSel="select ID as 单号,pnum as 票号,name as 货品名称,danwei as 单位,numbers as 数量,style as 类型,worker as 经手人,maker as 制单者,saledate as 销售日期,outdate as 出库日期,price*numbers as 总金额,beizhu as 备注 from saledata";
try
{
cn.Open();
OleDbDataAdapter MyAdapter=new OleDbDataAdapter(strSel,this.Connection.ConnectionString);
DataSet ds=new DataSet();
MyAdapter.Fill(ds,"saledata");
xd=new XmlDataDocument(ds);
cn.Close();
}
catch(Exception e)
{
//错误
str_error=e.ToString();
}
return xd;
}
[WebMethod(Description="删除(saledata表)数据后的数据的XML")]
public XmlDataDocument Delte_sale_data(string ID)
{
XmlDataDocument xd=new XmlDataDocument();
OleDbConnection cn;
cn=new OleDbConnection(this.Connection.ConnectionString);
string strSel="delete from saledata where ID='"+ID+"'";
try
{
cn.Open();
//删除datainfo表
OleDbDataAdapter MyAdapterdelete=new OleDbDataAdapter(strSel,this.Connection.ConnectionString);
DataSet ds=new DataSet();
MyAdapterdelete.Fill(ds,"productdata");
//删除moredatainfo表对应的信息
strSel="delete from salechilddata where ID='"+ID+"'";
OleDbDataAdapter MyAdapterdeletechild=new OleDbDataAdapter(strSel,this.Connection.ConnectionString);
MyAdapterdeletechild.Fill(ds,"productdata");
//查询删除后的数据
strSel="select ID as 单号,pnum as 票号,name as 货品名称,danwei as 单位,price as 单价,numbers as 数量,style as 类型,worker as 经手人,maker as 制单者,saledate as 销售日期,outdate as 出库日期,beizhu as 备注 from saledata";
OleDbDataAdapter MyAdapter=new OleDbDataAdapter(strSel,this.Connection.ConnectionString);
ds.Clear();
MyAdapter.Fill(ds,"saledata");
xd=new XmlDataDocument(ds);
cn.Close();
}
catch(Exception e)
{
//错误
str_error=e.ToString();
}
return xd;
}
[WebMethod(Description="从salechilddata表中得到当前某一次入库数据的详细XML.")]
public XmlDataDocument Get_sale_childdata_xml(string strnum)
{
XmlDataDocument xd=new XmlDataDocument();
OleDbConnection cn;
if(strnum=="")
return xd;
cn=new OleDbConnection(this.Connection.ConnectionString);
string strSel="select pnum as 票号,name as 货品名称,danwei as 单位,price as 单价,numbers as 数量,style as 类型,worker as 经手人,maker as 制单者,saledate as 销售日期,outdate as 出库日期,beizhu as 备注 from salechilddata where ID='"+strnum+"'";
try
{
cn.Open();
OleDbDataAdapter MyAdapter=new OleDbDataAdapter(strSel,this.Connection.ConnectionString);
DataSet ds=new DataSet();
MyAdapter.Fill(ds,"salechilddata");
xd=new XmlDataDocument(ds);
cn.Close();
}
catch(Exception e)
{
//错误
str_error=e.ToString();
}
return xd;
}
}
}