一.数据库
USE MASTER
IF OBJECT_ID(N'[dbo].[Company]') IS NOT NULL
DROP PROCEDURE [dbo].[Company]
GO
CREATE TABLE [dbo].[Company]
(
[CompanyID] INT NOT NULL PRIMARY KEY,
[CompanyName] NVARCHAR(200) NOT NULL
)
GO
二.WLZ.Model:
using System;
using System.Collections.Generic;
using System.Text;
namespace WLZ.Model
{
/// <summary>
/// Serializable 序列化 , 并且必须有 空构造函数
/// </summary>
[Serializable]
public class Company
{
public Company()
{
}
public Company(int companyID, string companyName)
{
this._companyID = companyID;
this._companyName = companyName;
}
private int _companyID ;
private string _companyName ;
public int CompanyID
{
get { return _companyID; }
set { _companyID = value; }
}
public string CompanyName
{
get { return _companyName; }
set { _companyName = value; }
}
}
}
三.WLZ.DataAccess( 添加引用 EnterpriseLibrary 中 Common.dll,Data.dll,ObjectBuilder.dll三个dll文件
添加引用 模型 WLZ.Model.dll )
using System;
using System.Data;
using System.Data.Common;
using System.Web.Services;
using System.Collections;
using System.Collections.Generic;
using System.Xml.Serialization;
using Microsoft.Practices.EnterpriseLibrary.Data;
using WLZ.Model;
namespace WLZ.DataAccess
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class CompanyDAO : WebService
{
Database db = null;
public CompanyDAO()
{
db = DatabaseFactory.CreateDatabase();
}
[WebMethod(Description = "IList 集合")]
[XmlInclude(typeof(Company))]
public IList GetCompanyIList()
{
IList result = new ArrayList();
string selectSqL = "SELECT * FROM [Company]";
DbCommand command = db.GetSqlStringCommand(selectSqL);
DataSet ds = db.ExecuteDataSet(command);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
Company company = new Company();
company.CompanyID = int.Parse(ds.Tables[0].Rows[i]["CompanyID"].ToString());
company.CompanyName = ds.Tables[0].Rows[i]["CompanyName"].ToString();
result.Add(company);
}
return result;
}
[WebMethod(Description = "为WebService返回泛型集合的方法,需要注意的是WebService只能返回类型而不能返回接口,如果使用IList<T>则会出现无法序列化对象错误.")]
[XmlInclude(typeof(Company))]
public List<Company> GetCompanyList()
{
List<Company> result = new List<Company>();
string selectSqL = "SELECT * FROM [Company]";
DbCommand command = db.GetSqlStringCommand(selectSqL);
DataSet ds = db.ExecuteDataSet(command);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
Company company = new Company();
company.CompanyID = int.Parse(ds.Tables[0].Rows[i]["CompanyID"].ToString());
company.CompanyName = ds.Tables[0].Rows[i]["CompanyName"].ToString();
result.Add(company);
}
return result;
}
[WebMethod(Description = "WebService 提供泛型接口,调用时传的是 Company[] 数组")]
[XmlInclude(typeof(Company))]
public void AddCompanyList(List<Company> CompanyList)
{
foreach (Company company in CompanyList)
{
string commandSQL = @"INSERT INTO [Company]
(
[CompanyID]
, [CompanyName]
)
values(
@p0
, @p1
)";
DbCommand command = db.GetSqlStringCommand(commandSQL);
db.AddInParameter(command, "p0", DbType.Int32, company.CompanyID);
db.AddInParameter(command, "p1", DbType.String, company.CompanyName);
db.ExecuteNonQuery(command);
}
}
}
}
四.WLZ.Host
添加引用 WLZ.DataAccess.dll 文件
创建 CompanyService.asmx
<%@ WebService Language="C#" Class="WLZ.DataAccess.CompanyDAO" %>
修改 web.config
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data"/>
</configSections>
<appSettings/>
<dataConfiguration defaultDatabase="AppDBServer"/>
<connectionStrings>
<add name="AppDBServer" connectionString="database=Demo;server=127.0.0.1;uid=sa;pwd=wlz;" providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
五.WLZ.Shell
添加Web引用 (http://localhost:6330/CompanyService.asmx)取名为 CompanyService
using WLZ.Shell.CompanyService;
CompanyDAO companyDAO = new CompanyDAO();
增加:
private void AddCompanyList(Company[] CompanyList)
{
companyDAO.AddCompanyList(CompanyList);
}
查询(集合)
private IList GetCompanyIList()
{
IList result = (IList)companyDAO.GetCompanyIList();
return result;
}
查询(泛型)
private Company[] GetCompanyList()
{
Company[] CompanyList = companyDAO.GetCompanyList();
return CompanyList ;
}