service.cs

来自「微软(Microsoft)出版社C井练习文件及解答」· CS 代码 · 共 118 行

CS
118
字号
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Configuration;
using System.Data.SqlClient;
using System.Diagnostics;

[WebService(Namespace = "http://www.contentmaster.com/NorthwindServices")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
    public Service () {

    }

    //[WebMethod]
    //public string HelloWorld() {
    //    return "Hello World";
    //}

    [WebMethod]
    public decimal HowMuchWillItCost(string productName, int howMany)
    {
        SqlConnection sqlConn = null;

        try
        {
            ConnectionStringSettings cs =
                ConfigurationManager.ConnectionStrings["NorthwindConnectionString"];
            string connString = cs.ConnectionString;
            sqlConn = new SqlConnection(connString);
            SqlCommand sqlCmd = new SqlCommand();
            sqlCmd.CommandText = "SELECT UnitPrice FROM Products " +
                "WHERE ProductName = '" + productName + "'";
            sqlCmd.Connection = sqlConn;
            sqlConn.Open();
            decimal price = (decimal)sqlCmd.ExecuteScalar();
            return price * howMany;
        }
        catch (Exception e)
        {
            handleWebException(e);
            throw new Exception();
        }
        finally
        {
            if (sqlConn != null)
                sqlConn.Close();
        }
    }

    [WebMethod]
    public Product GetProductInfo(string productName)
    {
        Product product = new Product();
        SqlConnection sqlConn = null;
        try
        {
            ConnectionStringSettings cs =
               ConfigurationManager.ConnectionStrings["NorthwindConnectionString"];
            string connString = cs.ConnectionString;
            sqlConn = new SqlConnection(connString);
            SqlCommand sqlCmd = new SqlCommand();
            sqlCmd.CommandText = "SELECT * FROM Products " +
                "WHERE ProductName = '" + productName + "'";
            sqlCmd.Connection = sqlConn;
            sqlConn.Open();
            SqlDataReader productData = sqlCmd.ExecuteReader();
            if (productData.Read())
            {
                product.ProductID = productData.GetInt32(0);
                product.ProductName = productData.GetString(1);
                product.SupplierID = productData.GetInt32(2);
                product.CategoryID = productData.GetInt32(3);
                product.QuantityPerUnit = productData.GetString(4);
                product.UnitPrice = productData.GetDecimal(5);
                product.UnitsInStock = productData.GetInt16(6);
                product.UnitsOnOrder = productData.GetInt16(7);
                product.ReorderLevel = productData.GetInt16(8);
                product.Discontinued = productData.GetBoolean(9);
            }
            else
            {
                throw new ArgumentException("No such product " + productName);
            }

            productData.Close();
            return product;
        }

        catch (ArgumentException e)
        {
            handleWebException(e);
            throw e;
        }

        catch (Exception e)
        {
            handleWebException(e);
            throw new Exception();
        }

        finally
        {
            if (sqlConn != null)
                sqlConn.Close();
        }
    }

    private void handleWebException(Exception e)
    {
        EventLog log = new EventLog("Application");
        log.Source = "NorthwindServices";
        log.WriteEntry(e.Message, EventLogEntryType.Error);
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?