- •About the Authors
- •Contents at a Glance
- •Contents
- •Introduction
- •Goal of the Book
- •How to Use this Book
- •Introduction to the .NET Framework
- •Common Language Runtime (CLR)
- •Class Library
- •Assembly
- •Versioning
- •Exceptions
- •Threads
- •Delegates
- •Summary
- •Introduction to C#
- •Variables
- •Initializing Variables
- •Variable Modifiers
- •Variable Data Types
- •Types of Variables
- •Variable Scope
- •Types of Data Type Casting
- •Arrays
- •Strings
- •Initializing Strings
- •Working with Strings
- •Statements and Expressions
- •Types of Statements
- •Expressions
- •Summary
- •Classes
- •Declaring Classes
- •Inheritance
- •Constructors
- •Destructors
- •Methods
- •Declaring a Method
- •Calling a Method
- •Passing Parameters to Methods
- •Method Modifiers
- •Overloading a Method
- •Namespaces
- •Declaring Namespaces
- •Aliases
- •Structs
- •Enumerations
- •Interfaces
- •Writing, Compiling, and Executing
- •Writing a C# Program
- •Compiling a C# Program
- •Executing a C# Program
- •Summary
- •Arrays
- •Single-Dimensional Arrays
- •Multidimensional Arrays
- •Methods in Arrays
- •Collections
- •Creating Collections
- •Working with Collections
- •Indexers
- •Boxing and Unboxing
- •Preprocessor Directives
- •Summary
- •Attributes
- •Declaring Attributes
- •Attribute Class
- •Attribute Parameters
- •Default Attributes
- •Properties
- •Declaring Properties
- •Accessors
- •Types of Properties
- •Summary
- •Introduction to Threads
- •Creating Threads
- •Aborting Threads
- •Joining Threads
- •Suspending Threads
- •Making Threads Sleep
- •Thread States
- •Thread Priorities
- •Synchronization
- •Summary
- •Case Study
- •Project Life Cycle
- •Analyzing Requirements
- •High-Level Design
- •Primary and Foreign Keys
- •Referential Integrity
- •Normalization
- •Designing a Database
- •Low-Level Design
- •Construction
- •Integration and Testing
- •User Acceptance Testing
- •Implementation
- •Operations and Maintenance
- •Summary
- •Creating a New Project
- •Console Application
- •Windows Applications
- •Creating a Windows Application for the Customer Maintenance Project
- •Creating an Interface for Form1
- •Creating an Interface for WorkerForm
- •Creating an Interface for CustomerForm
- •Creating an Interface for ReportsForm
- •Creating an Interface for JobDetailsForm
- •Summary
- •Performing Validations
- •Identifying the Validation Mechanism
- •Using the ErrorProvider Control
- •Handling Exceptions
- •Using the try and catch Statements
- •Using the Debug and Trace Classes
- •Using the Debugging Features of Visual Studio .NET
- •Using the Task List
- •Summary
- •Creating Form1
- •Connecting WorkerForm to the Workers Table
- •Connecting CustomerForm to the tblCustomer Table
- •Connecting the JobDetails Form
- •to the tblJobDetails Table
- •Summary
- •Introduction to the Crystal Reports Designer Tool
- •Creating the Reports Form
- •Creating Crystal Reports
- •Creating the Windows Forms Viewer Control
- •Creating the Monthly Worker Report
- •Summary
- •Introduction to Deploying a Windows Application
- •Deployment Projects Available in Visual Studio .NET
- •Deployment Project Editors
- •Summary
- •Case Study
- •Project Life Cycle
- •Analyzing Requirements
- •High-Level Design
- •Low-Level Design
- •Summary
- •Populating the TreeView Control
- •Displaying Employee Codes in the TreeView Control
- •Event Handling
- •Displaying Employee Details in the ListView Control
- •Summary
- •Case Study
- •Project Life Cycle
- •Analyzing Requirements
- •High-Level Design
- •Low-Level Design
- •Summary
- •Adding the Programming Logic to the Application
- •Adding Code to the Form Load() Method
- •Adding Code to the OK Button
- •Adding Code to the Exit Button
- •Summary
- •The Created Event
- •Adding Code to the Created Event
- •Overview of XML
- •The XmlReader Class
- •The XmlWriter Class
- •Displaying Data in an XML Document
- •Displaying an Error Message in the Event Log
- •Displaying Event Entries from Event Viewer
- •Displaying Data from the Summary.xml Document in a Message Box
- •Summary
- •Airline Profile
- •Role of a Business Manager
- •Role of a Network Administrator
- •Role of a Line-of-Business Executive
- •Project Requirements
- •Creation and Deletion of User Accounts
- •Addition of Flight Details
- •Reservations
- •Cancellations
- •Query of Status
- •Confirmation of Tickets
- •Creation of Reports
- •Launch of Frequent Flier Programs
- •Summarizing the Tasks
- •Project Design
- •Database Design
- •Web Forms Design
- •Enabling Security with the Directory Structure
- •Summary
- •Getting Started with ASP.NET
- •Prerequisites for ASP.NET Applications
- •New Features in ASP.NET
- •Types of ASP.NET Applications
- •Exploring ASP.NET Web Applications
- •Introducing Web Forms
- •Web Form Server Controls
- •Configuring ASP.NET Applications
- •Configuring Security for ASP.NET Applications
- •Deploying ASP.NET Applications
- •Creating a Sample ASP.NET Application
- •Creating a New Project
- •Adding Controls to the Project
- •Coding the Application
- •Summary
- •Creating the Database Schema
- •Creating Database Tables
- •Managing Primary Keys and Relationships
- •Viewing the Database Schema
- •Designing Application Forms
- •Standardizing the Interface of the Application
- •Common Forms in the Application
- •Forms for Network Administrators
- •Forms for Business Managers
- •Forms for Line-of-Business Executives
- •Summary
- •The Default.aspx Form
- •The Logoff.aspx Form
- •The ManageUsers.aspx Form
- •The ManageDatabases.aspx Form
- •The ChangePassword.aspx Form
- •Restricting Access to Web Forms
- •The AddFl.aspx Form
- •The RequestID.aspx Form
- •The Reports.aspx Form
- •The FreqFl.aspx Form
- •Coding the Forms for LOB Executives
- •The CreateRes.aspx Form
- •The CancelRes.aspx Form
- •The QueryStat.aspx Form
- •The ConfirmRes.aspx Form
- •Summary
- •Designing the Form
- •The View New Flights Option
- •The View Ticket Status Option
- •The View Flight Status Option
- •The Confirm Reservation Option
- •Testing the Application
- •Summary
- •Locating Errors in Programs
- •Watch Window
- •Locals Window
- •Call Stack Window
- •Autos Window
- •Command Window
- •Testing the Application
- •Summary
- •Managing the Databases
- •Backing Up the SkyShark Airlines Databases
- •Exporting Data from Databases
- •Examining Database Logs
- •Scheduling Database Maintenance Tasks
- •Managing Internet Information Server
- •Configuring IIS Error Pages
- •Managing Web Server Log Files
- •Summary
- •Authentication Mechanisms
- •Securing a Web Site with IIS and ASP.NET
- •Configuring IIS Authentication
- •Configuring Authentication in ASP.NET
- •Securing SQL Server
- •Summary
- •Deployment Scenarios
- •Deployment Editors
- •Creating a Deployment Project
- •Adding the Output of SkySharkDeploy to the Deployment Project
- •Deploying the Project to a Web Server on Another Computer
- •Summary
- •Organization Profile
- •Project Requirements
- •Querying for Information about All Books
- •Querying for Information about Books Based on Criteria
- •Ordering a Book on the Web Site
- •Project Design
- •Database Design
- •Database Schema
- •Web Forms Design
- •Flowcharts for the Web Forms Modules
- •Summary
- •Introduction to ASP.NET Web Services
- •Web Service Architecture
- •Working of a Web Service
- •Technologies Used in Web Services
- •XML in a Web Service
- •WSDL in a Web Service
- •SOAP in a Web Service
- •UDDI in a Web Service
- •Web Services in the .NET Framework
- •The Default Code Generated for a Web Service
- •Testing the SampleWebService Web Service
- •Summary
- •Creating the SearchAll() Web Method
- •Creating the SrchISBN() Web Method
- •Creating the AcceptDetails() Web Method
- •Creating the GenerateOrder() Web Method
- •Testing the Web Service
- •Securing a Web Service
- •Summary
- •Creating the Web Forms for the Bookers Paradise Web Site
- •Adding Code to the Web Forms
- •Summary
- •Case Study
- •Project Life Cycle
- •Analyzing Requirements
- •High-Level Design
- •Low-Level Design
- •Summary
- •Overview of Mobile Applications
- •The Microsoft Mobile Internet Toolkit
- •Overview of WAP
- •The WAP Architecture
- •Overview of WML
- •The Mobile Web Form
- •The Design of the MobileTimeRetriever Application
- •Creating the Interface for the Mobile Web Forms
- •Adding Code to the MobileTimeRetriever Application
- •Summary
- •Creating the Forms Required for the MobileCallStatus Application
- •Creating the frmLogon Form
- •Creating the frmSelectOption Form
- •Creating the frmPending Form
- •Creating the frmUnattended Form
- •Adding Code to the Submit Button in the frmLogon Form
- •Adding Code to the Query Button in the frmSelectOption Form
- •Adding Code to the Mark checked as complete Button in the frmPending Form
- •Adding Code to the Back Button in the frmPending Form
- •Adding Code to the Accept checked call(s) Button in the frmUnattended Form
- •Adding Code to the Back Button in the frmUnattended Form
- •Summary
- •What Is COM?
- •Windows DNA
- •Microsoft Transaction Server (MTS)
- •.NET Interoperability
- •COM Interoperability
- •Messaging
- •Benefits of Message Queues
- •Limitations
- •Key Messaging Terms
- •Summary
- •Pointers
- •Declaring Pointers
- •Types of Code
- •Implementing Pointers
- •Using Pointers with Managed Code
- •Working with Pointers
- •Compiling Unsafe Code
- •Summary
- •Introduction to the Languages of Visual Studio .NET
- •Visual C# .NET
- •Visual Basic .NET
- •Visual C++ .NET
- •Overview of Visual Basic .NET
- •Abstraction
- •Encapsulation
- •Inheritance
- •Polymorphism
- •Components of Visual Basic .NET
- •Variables
- •Constants
- •Operators
- •Arrays
- •Collections
- •Procedures
- •Arguments
- •Functions
- •Adding Code to the Submit Button
- •Adding Code to the Exit Button
- •Summary
- •Introduction to Visual Studio .NET IDE
- •Menu Bar
- •Toolbars
- •Visual Studio .NET IDE Windows
- •Toolbox
- •The Task List Window
- •Managing Windows
- •Customizing Visual Studio .NET IDE
- •The Options Dialog Box
- •The Customize Dialog Box
- •Summary
- •Index
650 Project 5 CREATING A WEB PORTAL FOR A BOOKSTORE
Similarly, you can write the code for the Web methods that accept the author, the category, or the title as the parameter.
Creating the AcceptDetails() Web Method
In addition to providing the data to the Web site, DTWebService accepts the details of the customer who orders a book on the Web service. These details are then stored in the DTDB database.To perform this function, create another Web method, AcceptDetails(). The code for the AcceptDetails() Web method is as shown:
public string AcceptDetails(string ISBN, string DateOrder, string CustName, string CustAddr1, string CustAddr2, string CustCity, string CustState, string OrdBy, string OrdStat, string CardType, string CardNum)
{
string OrderNo; string error; error=””;
OrderNo = GenerateOrder();
string InsStr;
InsStr = “Insert Into DTOrders Values( @IN, @ON, @DO, @CN, @CA1, @CA2, @CC, @CS, @OB, @ST, @CT, @CCN)”;
try
{
SqlCommand InsCom;
InsCom = new SqlCommand(InsStr, sqlConnection1); sqlDataAdapter1.InsertCommand = InsCom; sqlDataAdapter1.InsertCommand.Parameters.Add(“@IN”, SqlDbType.Char,10).
Value = ISBN;
sqlDataAdapter1.InsertCommand.Parameters.Add(“@ON”, SqlDbType.Char,5). Value = OrderNo;
sqlDataAdapter1.InsertCommand.Parameters.Add(“@DO”,SqlDbType.DateTime,8). Value = Convert.ToDateTime(DateOrder).Date ;
sqlDataAdapter1.InsertCommand.Parameters.Add(“@CN”, SqlDbType.VarChar ,50). Value= CustName;
sqlDataAdapter1.InsertCommand.Parameters.Add(“@CA1”, SqlDbType.VarChar,50). Value= CustAddr1;
sqlDataAdapter1.InsertCommand.Parameters.Add(“@CA2”,SqlDbType.VarChar,50).
DEVELOPING WEB SERVICES |
Chapter 29 |
|
651 |
|
|
||||
|
|
|
|
|
Value=CustAddr2; sqlDataAdapter1.InsertCommand.Parameters.Add(“@CC”,SqlDbType.VarChar,20).
Value = CustCity;
sqlDataAdapter1.InsertCommand.Parameters.Add(“@CS”, SqlDbType.VarChar ,10). Value = CustState;
sqlDataAdapter1.InsertCommand.Parameters.Add(“@OB”,SqlDbType.VarChar , 50). Value=OrdBy;
sqlDataAdapter1.InsertCommand.Parameters.Add(“@ST”,SqlDbType.VarChar,20). Value=OrdStat;
sqlDataAdapter1.InsertCommand.Parameters.Add(“@CT”,SqlDbType.Char,10). Value=CardType;
sqlDataAdapter1.InsertCommand.Parameters.Add(“@CCN”,SqlDbType.VarChar,20). Value=CardNum;
if(sqlConnection1.State== ConnectionState.Closed )
{
sqlConnection1.Open ();
}
sqlDataAdapter1.InsertCommand.ExecuteNonQuery(); sqlConnection1.Close();
}
catch(Exception E1)
{
error = E1.Message;
}
string result;
if (error.Length != 0)
{
result = “Record Not Inserted due to the following reason: \n”+ error;
}
else
{
result = “Record Inserted!!”;
}
return result;
}
The preceding code declares a Web method with the name AcceptDetails() that returns a string type variable.This string type variable, result, returns a message
652 Project 5 CREATING A WEB PORTAL FOR A BOOKSTORE
whether the records are inserted in the DTDB database or not. If an error occurs while attempting to add the records to the DTDB database, the AcceptDetails() Web method returns an error.
In addition, the Web method declaration statement accepts 11 parameters, each corresponding to a field in the DTOrders table. These parameters include ISBN number, date of ordering, name of the customer, address of the customer, and so on. In addition, the credit card details of the customer are passed as a parameter to the Web method.
Inside the Web method, three string variables, OrderNo, error, and InsStr, are declared. The variable error is initialized to a null value. However, the OrderNo variable is initialized to the GenerateOrder() method. The GenerateOrder() method is used to autogenerate the order number for any order placed by a customer. You will learn to add code to the GenerateOrder() method later in this chapter.
Next, the code creates a SQL statement that inserts a value into the DTOrders table. To do this, an Insert statement is created.The Insert statement accepts 12 parameters, each corresponding to the parameter passed to the AcceptDetails() Web method. This Insert statement is then stored in the InsStr variable.
After creating the SQL statement, a try loop is used to enter records to the DTOrders table. Inside the try loop, an instance, InsCom, of the SqlCommand class is created and the Insert command is passed as a parameter to the constructor of the SqlCommand class. Then, the value of the parameter passed to the AcceptDetails() Web method is stored in the SqlParameterCollection object. This process is repeated for all of the 11 parameters.
Next, an if statement is used to check whether the connection to the DTDB database is closed or not. To do this, the State property of the SqlConnection class is used. If the connection is closed, the code opens the connection by using the Open() method.Then, the ExecuteNonQuery() method is used to return the records affected by the Insert statement and the connection to the SQL database is closed.
While adding records to the DTOrders table, if an exception is generated, the exception is caught in the catch loop and stored in the error variable. Next, a string type variable result is declared that returns the message stating whether the records are added to the database or not. To do this, the Length property of the String class is used. If the value in the Length property is equal to zero, an error
DEVELOPING WEB SERVICES |
Chapter 29 |
653 |
|
|
|
|
|
message is displayed. However, if the records are added, a message confirming that the records are added is displayed. Figure 29-7 shows the message returned by the AcceptDetails() Web method.
FIGURE 29-7 The message returned by the AcceptDetails() Web method
Until now, I have not added a description for the AcceptDetails() Web method. To do this, add the following statement before the Web method:
[WebMethod(Description=”This method accepts the details of Customer who opt “ + “
for a book published by Deepthoughts Publications”)]
Creating the GenerateOrder() Web Method
As discussed earlier, when a customer places an order for a book, the details of the book and the customer are returned to the Web service. In addition, an order number for each order is generated automatically. To do this, you need to write code for the GenerateOrder() Web method.
However, first add a short description for the Web method.
[WebMethod(Description=”This method returns the order number of a customer”)]
654 Project 5 CREATING A WEB PORTAL FOR A BOOKSTORE
Now, add the following code to the Web service:
[WebMethod(Description=”This method returns the order number of a customer”)] public string GenerateOrder()
{
string SelStr;
SelStr = “Select Count(*) From DTOrders”;
SqlCommand SelCom;
SelCom = new SqlCommand(SelStr, sqlConnection1); sqlConnection1.Open(); sqlDataAdapter1.SelectCommand = SelCom; sqlDataAdapter1.Fill(dsDetails1,”Details”); sqlConnection1.Close();
string str;
str = dsDetails1.Tables[“Details”].Rows[0][0].ToString (); int val;
val = Convert.ToInt32(str); val= val+1;
if(val>0 & val<=9)
{
str = “O000” + Convert.ToString(val);
}
else if(val>9 & val<=99)
{
str =”O00” + Convert.ToString (val);
}
else if(val>99 & val <=999)
{
str = “O0” + Convert.ToString (val);
}
else
{
str = “O” + Convert.ToString (val);
}
return str;
}
DEVELOPING WEB SERVICES |
Chapter 29 |
655 |
|
|
|
|
|
The preceding code declares a public Web method named GenerateOrder() that returns a string containing the generated order number. Inside the method declaration statement, a string type variable named SelStr is declared. This variable is then initialized to a SQL statement that selects all the records in the DTOrders table. Next, an instance of the SqlCommand class is created and initialized to the SQL statement stored in the SelStr variable.
Then, the Open() method is used to open the SQL connection to the DTOrders table. Next, the records in the DTOrders table are selected using the SelectCommand property. These records are then added to the dsDetails dataset by using the Fill() method and the connection to the DTOrders table is closed.
The code then declares a string type variable named str and initializes it to a collection of rows in the DTOrders table. To do this, the Rows property of the DataRowCollection class is used. The value returned by the Rows property is co nverted to a string value by using the ToString() method and stored in the str variable. Next, an integer type variable, val, is declared and initialized to the 32-bit signed integer equivalent of the value stored in the str variable. To convert the string type variable to the 32-bit signed integer variable, you use the ToInt property of
the System.Convert class.
The value stored in the variable val is the number of records in the DTOrders table. Therefore, to generate the next order number, you need to add 1 to the value in the variable val. Then, an if loop is used to find the range of the value in the variable val. If this value lies in the range 0 to 9, the string, O000, is added to this value. However, to do this, you again need to convert the value in the variable val to a string type value.
Similarly, if the value in the variable val lies in the range 9 to 99, the string O00 is added to the value. Therefore, the range of the value is found out and O followed by zeros is added to make the order number a four-digit number. This value stored in the variable str is returned by the Web method.
After writing the code for the GenerateOrder() Web method, you can test the Web method. On testing the Web method, an order number is returned,as shown in Figure 29-8.
656 Project 5 CREATING A WEB PORTAL FOR A BOOKSTORE
FIGURE 29-8 The order number returned by the GenerateOrder() Web method
Now look at the entire code for the Web service project that you created.This will help you enhance your understanding of the Web service.
using System;
using System.Collections; using System.ComponentModel; using System.Data;
using System.Diagnostics; using System.Web;
using System.Web.Services; using System.Data.SqlClient ;
namespace DTWebService
{
[WebService (Namespace=”http://LocalHost/DTWebService/”, Description=”A service displaying catalogs of Deepthoughts Publications “)]
public class Service1 : System.Web.Services.WebService
{
public Service1()
DEVELOPING WEB SERVICES |
Chapter 29 |
657 |
|
|
|
|
|
{
InitializeComponent();
}
private System.Data.SqlClient.SqlCommand sqlSelectCommand1; private System.Data.SqlClient.SqlCommand sqlInsertCommand1; private System.Data.SqlClient.SqlCommand sqlUpdateCommand1; private System.Data.SqlClient.SqlCommand sqlDeleteCommand1; private System.Data.SqlClient.SqlConnection sqlConnection1; private System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1; private DTWebService.dsDetails dsDetails1;
[WebMethod(Description=”This method accepts the details of Customer who opt“ +” for a book published by Deepthoughts Publications”)]
public string AcceptDetails(string ISBN, string DateOrder, string CustName, string CustAddr1, string CustAddr2, string CustCity, string CustState, string OrdBy, string OrdStat, string CardType, string CardNum)
{
string OrderNo; string error; error=””;
OrderNo = GenerateOrder(); string InsStr;
InsStr = “Insert Into DTOrders Values( @IN, @ON, @DO, @CN, @CA1, @CA2, @CC, @CS, @OB, @ST, @CT, @CCN)”;
try
{
SqlCommand InsCom;
InsCom = new SqlCommand(InsStr, sqlConnection1); sqlDataAdapter1.InsertCommand = InsCom; sqlDataAdapter1.InsertCommand.Parameters.Add(“@IN”, SqlDbType.Char,10).
Value = ISBN;
sqlDataAdapter1.InsertCommand.Parameters.Add(“@ON”, SqlDbType.Char,5). Value = OrderNo;
sqlDataAdapter1.InsertCommand.Parameters.Add(“@DO”, SqlDbType.DateTime,8).Value = Convert.ToDateTime(DateOrder).Date ;
658 |
Project 5 |
CREATING A WEB PORTAL FOR A BOOKSTORE |
||
|
|
sqlDataAdapter1.InsertCommand.Parameters.Add(“@CN”, SqlDbType |
||
|
|
|||
|
|
.VarChar ,50).Value= CustName; |
||
|
|
sqlDataAdapter1.InsertCommand.Parameters.Add(“@CA1”, SqlDbType |
||
|
|
.VarChar,50).Value= CustAddr1; |
||
|
|
sqlDataAdapter1.InsertCommand.Parameters.Add(“@CA2”,SqlDbType |
||
|
|
.VarChar,50).Value=CustAddr2; |
||
|
|
sqlDataAdapter1.InsertCommand.Parameters.Add(“@CC”,SqlDbType |
||
|
|
.VarChar,20).Value = CustCity; |
||
|
|
sqlDataAdapter1.InsertCommand.Parameters.Add(“@CS”, SqlDbType |
||
|
|
.VarChar ,10).Value = CustState; |
||
|
|
sqlDataAdapter1.InsertCommand.Parameters.Add(“@OB”,SqlDbType |
||
|
|
.VarChar , 50).Value=OrdBy; |
Y |
|
|
|
|
L |
|
|
|
sqlDataAdapter1.InsertCommand.Parameters.Add(“@ST”,SqlDbType |
||
|
|
|
F |
|
|
|
.VarChar,20).Value=OrdStat; |
|
|
|
|
sqlDataAdapter1.InsertCommand.Parameters.Add(“@CT”,SqlDbType |
||
|
|
|
M |
|
|
|
.Char,10).Value=CardType; |
|
|
|
|
sqlDataAdapter1A.InsertCommand.Parameters.Add(“@CCN”,SqlDbType |
||
|
|
.VarChar,20).Value=CardNum; |
|
|
|
|
E |
|
|
|
|
T |
|
|
if(sqlConnection1.State== ConnectionState.Closed )
{
sqlConnection1.Open ();
}
sqlDataAdapter1.InsertCommand.ExecuteNonQuery(); sqlConnection1.Close();
}
catch(Exception E1)
{
error = E1.Message;
}
string result;
if (error.Length != 0)
{
result = “Record Not Inserted due to the following reason: \n”+ error;
}
Team-Fly®
DEVELOPING WEB SERVICES |
Chapter 29 |
659 |
|
|
|
|
|
else
{
result = “Record Inserted!!”;
}
return result;
}
[WebMethod(Description=”This method searches for the details of all books published by Deepthoughts Publications “)]
public DataSet SearchALL()
{
string SelStr;
SelStr = “Select * from DTCatalog”;
SqlCommand SelCom;
SelCom = new SqlCommand(SelStr, sqlConnection1); sqlDataAdapter1.SelectCommand = SelCom; sqlConnection1.Open(); sqlDataAdapter1.SelectCommand.ExecuteNonQuery(); sqlDataAdapter1.Fill(dsDetails1,”Details”); sqlConnection1.Close();
return dsDetails1;
}
[WebMethod(Description=”This method searches for the details of the book based on the “ +” ISBN Number of the book”)]
public DataSet SrchISBN(string ISBN)
{
string SelStr;
SelStr = “Select * from DTCatalog where ISBNNo = @ISB”;
SqlCommand SelCom;
SelCom = new SqlCommand(SelStr, sqlConnection1); sqlDataAdapter1.SelectCommand = SelCom; sqlDataAdapter1.SelectCommand.Parameters.Add(“@ISB”,SqlDbType.Char, 10)
.Value = ISBN; sqlConnection1.Open();
sqlDataAdapter1.SelectCommand.ExecuteNonQuery(); sqlDataAdapter1.Fill(dsDetails1,”Details”);
660 Project 5 CREATING A WEB PORTAL FOR A BOOKSTORE
sqlConnection1.Close();
return dsDetails1;
}
[WebMethod(Description=”This method searches for the details of the book based on the “ + “ the name of the Author”)]
public DataSet SrchAuthor(string Author)
{
string SelStr;
SelStr = “Select * from DTCatalog where Author = @AU”;
SqlCommand SelCom;
SelCom = new SqlCommand(SelStr, sqlConnection1); sqlDataAdapter1.SelectCommand = SelCom; sqlDataAdapter1.SelectCommand.Parameters.Add(“@AU”,SqlDbType.
VarChar , 50).Value = Author; sqlConnection1.Open(); sqlDataAdapter1.SelectCommand.ExecuteNonQuery(); sqlDataAdapter1.Fill(dsDetails1,”Details”); sqlConnection1.Close();
return dsDetails1;
}
[WebMethod(Description=”This method searches for the details of the book based on the “ +” the Catalog of the books”)]
public DataSet SrchCategory(string Catalog)
{
string SelStr;
SelStr = “Select * from DTCatalog where Category = @CA”;
SqlCommand SelCom;
SelCom = new SqlCommand(SelStr, sqlConnection1); sqlDataAdapter1.SelectCommand = SelCom; sqlDataAdapter1.SelectCommand.Parameters.Add(“@CA”,SqlDbType.Char , 10)
.Value = Catalog; sqlConnection1.Open();
sqlDataAdapter1.SelectCommand.ExecuteNonQuery(); sqlDataAdapter1.Fill(dsDetails1,”Details”); sqlConnection1.Close();
DEVELOPING WEB SERVICES |
Chapter 29 |
661 |
|
|
|
|
|
return dsDetails1;
}
[WebMethod(Description=”This method searches for the details of the book based on the “ + “ the Title of the books”)]
public DataSet SrchTitle(string BkTitle)
{
string SelStr;
SelStr = “Select * from DTCatalog where BookTitle = @BT”;
SqlCommand SelCom;
SelCom = new SqlCommand(SelStr, sqlConnection1); sqlDataAdapter1.SelectCommand = SelCom; sqlDataAdapter1.SelectCommand.Parameters.Add(“@BT”,SqlDbType.VarChar , 50)
.Value = BkTitle; sqlConnection1.Open();
sqlDataAdapter1.SelectCommand.ExecuteNonQuery(); sqlDataAdapter1.Fill(dsDetails1,”Details”); sqlConnection1.Close();
return dsDetails1;
}
[WebMethod(Description=”This method returns the order number of a customer”)] public string GenerateOrder()
{
string SelStr;
SelStr = “Select Count(*) From DTOrders”;
SqlCommand SelCom;
SelCom = new SqlCommand(SelStr, sqlConnection1); sqlConnection1.Open(); sqlDataAdapter1.SelectCommand = SelCom; sqlDataAdapter1.Fill(dsDetails1,”Details”); sqlConnection1.Close();
string str;
str = dsDetails1.Tables[“Details”].Rows[0][0].ToString (); int val;
val = Convert.ToInt32(str);