Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 68 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
68
Dung lượng
672,05 KB
Nội dung
Figure 12-2: A sample Order form After creating the ASP.NET Web Application project, design two Web Forms as shown in Figure 12-2 and Figure 12-3. The Order form will enable customers on the Web to place orders for products. Refer to Table 12-2 to specify IDs for the controls (that are used in code examples) on the Order form. In this form, you'll implement the functionality to view the complete product list or to view the details of a specific product. For this to happen, you'll access data from the Products table in a database called "Sales" stored on a SQL server. Figure 12-3: A sample Customer form Table 12-2: IDs of the Controls on the Order Forms Control ID Order ID TexBox Order_ID Table 12-2: IDs of the Controls on the Order Forms Control ID Customer ID TextBox Customer_ID Product ID TextBox Product_ID Quantity TextBox Order_Quantity Order Date TextBox Order_Date Data Grid MyDataGrid The Customer form will enable users to register themselves as customers. Table 12-3 shows the IDs of the controls (that are used in code examples) on the Customer form. This form uses the Customers table in the "Sales" database stored on a SQL server. Table 12-3: IDs of the Controls on the Customer Form Control ID Customer ID TextBox Cust_ID Customer Name TextBox Cust_Name Address TextBox Cust_Address City TextBox Cust_City State TextBox Cust_State Zip TextBox Cust_Zip DataGrid MyDataGrid Label next to the Add button LblMessage The sample forms use a DataGrid control to display records from the tables stored in a SQL database on a SQL server. A DataGrid control enables a form to display data bound to a data source. Accessing data After designing the forms, you'll add the desired functionality to them. First, you'll add the functionality to the Order form. The form should enable customers to view the complete product list by clicking the View Product List button. Also, the form should enable customers to view the details of a specific product by clicking the View Product Details button. To implement this functionality, open the code behind file (with .vb extension) of the Order form. At the top of the Order form, import the two namespaces as follows: Imports System.Data Imports System.Data.SqlClient Next, in the Click event of the button labeled View Product List, enter the following code: 'Declare the objects of the SqlConnection, 'SqlDataAdapter, and DataSet classes Dim DS As DataSet Dim MyConnection As SqlConnection Dim MyCommand As SqlDataAdapter 'Initializing the SqlConnection object MyConnection = New SqlConnection ("server=localhost; uid=sa;pwd=;database=Sales") 'Initializing the SqlDataAdapter object with the SQL 'query to access data from the Products table MyCommand = New SqlDataAdapter("select * from Products", MyConnection) 'Initializing the DataSet object and filling the data set with the query result DS = new DataSet() MyCommand.Fill(DS,"Products") 'Setting the DataSource property of the DataGrid control MyDataGrid.DataSource=DS.Tables("Products").DefaultView 'Binding the DataGrid control with the data MyDataGrid.DataBind() In this code, the comments provide explanation for the statements that follow. However, some statements need more explanation: § When initializing the SqlConnection object, the constructor takes four parameters: o The first parameter, which represents the SQL Server, is localhost, indicating that the server resides on the local computer. However, if the SQL server resides on a network, you need to give its complete address. o The uid and pwd parameters represent the User ID and Password on the SQL Server. o The database parameter represents the name of the SQL database that you want to access. In this case, the database is "Sales." § When initializing the SqlDataAdapter object, the constructor takes two parameters: o The first parameter represents the SQL query. In this case, the query is used to retrieve all the records from the Products table. o The second parameter represents the SqlConnection object. § The Fill method of the SqlDataAdapter class is used to fill the DataSet object with the data. This method takes two parameters: § The DataSet object § The identifier for the DataTable § When setting the DataSource property of the DataGrid control, the default view of the Products table in the DataSet object is used. After you write the respective code, save the project and execute it. When you click the button with the "View Product List" caption, the product details are displayed in the DataGrid control. Now, you'll implement the functionality to display the product details of only that product whose ID is entered in the Product ID text box. To do so, write the following code in the Click event of the button labeled "View Product Details": Dim DS As DataSet Dim MyConnection As SqlConnection Dim MyCommand As SqlDataAdapter 'Initializing a String variable with the SQL query to be passed as a 'parameter for the SqlDataAdapter constructor Dim SelectCommand As String = "select * from Products where ProductID = @prod" MyConnection = New SqlConnection("server=localhost; uid=sa;pwd=;database=Sales") MyCommand = New SqlDataAdapter(SelectCommand, MyConnection) 'Creating a SQL parameter called @prod whose data type is VarChar with size 4 MyCommand.SelectCommand.Parameters.Add(New SqlParameter ("@prod", SqlDbType.NVarChar, 4)) 'Setting the SQL parameter @prod with the value of the text box displaying Product ID MyCommand.SelectCommand.Parameters("@prod").Value = Product_ID.Text DS = New DataSet() MyCommand.Fill(DS, "Products") MyDataGrid.DataSource = DS.Tables("Products").DefaultView MyDataGrid.DataBind() After you've written this code, save the project and execute it to check the desired functionality. Adding data You'll implement the functionality to add data in the Customer form shown earlier in Figure 12-3. The form should enable a user to add the customer registration information upon clicking the Add button. To implement this functionality, add the following code at the top of the code behind file of the Customer form: Imports System.Data Imports System.Data.SqlClient Tip As a good programming practice, the objects that are shared across the form are declared globally. Also, the code that implements data binding to the DataGrid control has been segregated in a separate procedure, which can be called whenever required. In the Declaration section of the form class, declare the object of the SqlConnection class as follows: Dim MyConnection As SqlConnection Next, create a procedure called BindGrid to bind data from the Customers table to the DataGrid control. To do so, write the following code in the form class: Sub BindGrid() Dim MyCommand As SqlDataAdapter = New SqlDataAdapter("select * from Customers", MyConnection) Dim DS As DataSet = New DataSet() MyCommand.Fill(DS, "Customers") MyDataGrid.DataSource = DS.Tables("Customers").DefaultView MyDataGrid.DataBind() End Sub Then, in the Click event of the Add button, write the following code: Dim DS As DataSet Dim MyCommand As SqlCommand 'Checking for the customer details. If the values are not entered, an 'error is displayed If Cust_ID.Text = "" Or Cust_Name.Text = "" or Cust_Address. Text="" or Cust_City="" or Cust_State="" Then lblMessage.Text = "Null values not allowed in these fields " BindGrid() End If 'Defining the SQL query for inserting data into the Customers table Dim InsertCmd As String = "insert into Customers values (@CID, @Cname, @Caddress,@Ccity,@Cstate,@Czip)" 'Passing the SQL query in the SqlCommand object MyCommand = New SqlCommand(InsertCmd, MyConnection) 'Adding the SQL parameters and setting their values MyCommand.Parameters.Add(New SqlParameter("@CId", SqlDbType.NVarChar, 4)) MyCommand.Parameters("@CId").Value = Cust_ID.Text MyCommand.Parameters.Add(New SqlParameter("@Cname", SqlDbType.NVarChar, 20)) MyCommand.Parameters("@Cname").Value = Cust_Name.Text MyCommand.Parameters.Add(New SqlParameter("@Caddress", SqlDbType.NVarChar, 20)) MyCommand.Parameters("@Caddress").Value = Cust_Address.Text MyCommand.Parameters.Add(New SqlParameter("@Ccity", SqlDbType.NVarChar, 20)) MyCommand.Parameters("@Ccity").Value = Cust_City.Text MyCommand.Parameters.Add(New SqlParameter("@Cstate", SqlDbType.NVarChar, 20)) MyCommand.Parameters("@Cstate").Value = Cust_State.Text MyCommand.Parameters.Add(New SqlParameter("@Czip", SqlDbType.NVarChar, 20)) MyCommand.Parameters("@Czip").Value = Cust_Zip.Text 'Opening the connection MyCommand.Connection.Open() 'Executing the command MyCommand.ExecuteNonQuery() lblMessage.Text = "Record Added successfully" 'Closing the connection MyCommand.Connection.Close() 'calling the BindGrid method to reflect the added record in the DataGrid control BindGrid() When you run this application, you'll notice that the customer details are reflected in the DataGrid control after you enter the data in the respective text boxes and click the Add button. Modifying and deleting data The DataGrid control enables users to modify and delete records. To allow rows to be edited, the EditItemIndex property of the DataGrid control is used. By default, this property is set to -1, indicating that no rows are editable. The DataGrid control has a property called Columns that you can use to add buttons to allow user interaction with individual data rows. To add a button column, follow these steps: 1. Open the Property Window of the DataGrid control. 2. Click the ellipsis in the Columns property to open the Properties dialog box, as shown in Figure 12-4. Figure 12-4: The Properties dialog box 3. In the left pane, click Columns. 4. In the right pane, under the Available Columns list, under Button Columns, select Edit, Update, Cancel and click the > button to add this button column to the control. 5. Click OK to close the dialog box. The DataGrid control can have three types of button columns, described as follows: § The Select button column renders a Select link button used to access a specific row. § The Edit, Update, Cancel button column renders three link buttons: Edit, Update, and Cancel. The Edit button is used to display the row in Edit mode. After the row switches to Edit mode, the column displays Update and Cancel buttons, which are used to update or cancel the changes made to the row. § The Delete button column renders a Delete button that enables users to delete a specific row. To add the update functionality, add the Edit, Update, Cancel button column to your DataGrid control. When the Edit button is clicked, the EditCommand method of the DataGrid control is called. The UpdateCommand method is called when the Update button is clicked. And, when the Cancel button is clicked, the CancelCommand method is called. Therefore, you need to write appropriate code in these methods to implement the desired functionality. In the EditCommand method of the DataGrid control, set the EditItemIndex property as follows: Public Sub MyDataGrid_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles MyDataGrid.EditCommand 'Setting the EditItemIndex property of the DataGrid control to indicate the row to be edited MyDataGrid.EditItemIndex = e.Item.ItemIndex End Sub In this code: § The EditCommand method takes two arguments: o source: Represents the object that generates the event. In this case, the source is the DataGrid control. o e: Represents the object of the DataGridCommandeventArgs class. This argument represents the event information of the source. § Item indicates the item that generated the event. In this case, it is the DataGrid control. § ItemIndex represents the row number for the item. After you've written this code, you need to use the following SQL statement as a String variable in the UpdateCommand method to modify the customer address based on a customer ID: Dim UpdateCmd As String = "Update Customers Set Address = @Address Where CustomerID = @CID" MyCommand = New SqlCommand(UpdateCmd, MyConnection) Now, let us discuss how we can implement data deletion in a SQL table. The first step is to add a Delete button column to the DataGrid control. Then, in the DeleteCommand method of the DataGrid control, add the code to delete a customer record. The following SQL statement needs to be used as a String variable to delete a customer record based on a customer ID: 'Defining the SQL query to delete a record from Customers table Dim DeleteCmd As String = "Delete from Customers where CustomerID = @CID" MyCommand = New SqlCommand(DeleteCmd, MyConnection) After understanding how to update and delete data in a SQL Server database, let us now see how to use stored procedures through your Web applications. Using stored procedures As mentioned earlier, stored procedures perform database operations more efficiently than the ad hoc SQL queries, because stored procedures are stored on the SQL Server. You simply need to write the procedure's name and the procedure parameters, if any, to execute the stored procedure. When using stored procedure, the traffic is less as compared to passing the complete set of SQL queries to the server. Therefore, the performance is greatly improved. If a stored procedure already exists on a SQL Server, use the following syntax to create the SqlDataAdapter object: MyCommand = New SqlDataAdapter("Procedure_Name", MyConnection) MyCommand.SelectCommand.CommandType = CommandType.StoredProcedure In this syntax: § MyCommand is the object of the SqlDataAdapter class. § MyConnection is the object of the SqlConnection class. § Procedure_Name represents the name of the procedure to be called. § The second statement specifies that the command passed in statement1 is a stored procedure. Stored procedures can also take parameters that need to be passed while executing them. Parameters make the stored procedures more flexible because they return results based on user input. For example, you can create a stored procedure that takes a product name as a parameter and displays the product details for the specified product. To use stored procedures that take parameters, use the following syntax: MyCommand = New SqlDataAdapter("Procedure_Name", MyConnection) MyCommand.SelectCommand.CommandType = CommandType.StoredProcedure 'Adding a SQL parameter with SQL data type MyCommand.SelectCommand.Parameters.Add(New SqlParameter("@Parameter_name", SqlDbType.datatype, size)) 'Setting the value of the SQL parameter MyCommand.SelectCommand.Parameters("@Parameter_name").Value = TextBox1.Text In the last statement, the value of the parameter is initialized. Here, the value is initialized by a value entered in a text box at run time. Before you can use a stored procedure in your Web application, create a procedure named "DisplayCustomer." The code for the same is given as follows: Create Procedure DisplayCustomer (@CustID Varchar(4)) As Select * from Customers Where CustomerID=@CustID Return Next, you'll extend the functionality of the Customer form shown in Figure 12-3. Add a button with ID and text as "Query." In the Click event of this button, write the following code: Dim DS As DataSet Dim MyConnection As SqlConnection Dim MyCommand As SqlDataAdapter MyConnection = New SqlConnection("server=localhost;uid=sa;pwd=;database=Pubs") 'Calling the DisplayCustomers stored procedure MyCommand = New SqlDataAdapter("DisplayCustomers", MyConnection) MyCommand.SelectCommand.CommandType = CommandType.StoredProcedure 'Adding the SQL parameter MyCommand.SelectCommand.Parameters.Add(New SqlParameter("@CustID", SqlDbType.NVarChar, 4)) 'Specifying the parameter value MyCommand.SelectCommand.Parameters("@CustID").Value = Customer_ID.Text DS = New DataSet() MyCommand.Fill(DS, "Customers") MyDataGrid.DataSource = DS.Tables("Customers").DefaultView MyDataGrid.DataBind() When you run the application, you can test the code for its functionality. To do so, enter a customer ID in the Customer ID text box and click the Query button. The DataGrid control now displays only one record with the specified customer ID. Using ADO Extensions (ADOX) Data is stored and maintained in different data sources. Some data source applications include MS-Access, SQL Server, Oracle, and Sybase. Each data source uses its own native syntax. Therefore, when you need to manage data stored in data sources from your applications, you would prefer to use standard objects and syntaxes irrespective of the data sources. It is inconvenient to use different objects, methods, and syntaxes to manage different data sources. ADOX provides a set of standard objects that you can use to manage data stored in different data sources. ActiveX Data Objects Extensions (ADOX) is an extension of the ADO objects and programming model that allows creation, modification, and manipulation of schema objects, such as databases, tables, and columns. ADOX also includes security objects that enable you to maintain users and groups that access the schema objects. ADOX [...]... Orders", SQLCon) Dim dsOrders As New DataSet() Mycommand.Fill(dsOrders, "Order") Dim XmlDoc as XmlDocument = New XmlDataDocument(dsOrders) MyXmlDoc.Document = XmlDoc Xmldoc.save ("orders.xml") End Sub In this example, you specify that the contents of the page represent an XML document by giving the following statement: You... class Finally, you display the resulting XML document in the Web form This is done by creating an XML server control with the ID "MyXmlDoc" and setting the Document property of the control to the XmlDocument object created in the previous step: MyXmlDoc.Document = XmlDoc You can save the resulting XML document in a file by using the Save() method of XMLDocument The Save() method takes a string that... III: Advanced ASP.NET Chapter List Chapter Chapter Chapter Chapter Chapter Chapter Chapter Chapter 14: 15: 16: 17: 18: 19: 20: 21: Chapter 14: ASP.NET Application Configuration Developing Business Objects Building HTTP Handlers Understanding Caching Building Wireless Applications with ASP.NET Mobile Controls ASP.NET Security Localizing ASP.NET Applications Deploying ASP.NET Applications ASP.NET Application... convert it into an XML document by using the following statement: Dim XmlDoc as XmlDocument = New XmlDataDocument (dsOrders) In this statement, the constructor of the XmlDataDocument class is invoked The constructor takes the DataSet object as a parameter and loads the data set into the XmlDataDocument object The reference to this new instance is stored in an object of the XmlDocument class Finally,... server-side control Converting Relational Data to XML Format ASP.NET enables you to easily convert the data from a database into an XML document ASP.NET provides the XMLDataDocument class, which enables you to load relational data as well as data from an XML document into a data set The data loaded in XMLDataDocument can then be manipulated using the W3C Document Object Model The following example converts... informs the browser that the document being processed is an XML document Note XML documents have the extension xml When you open the preceding XML document in Internet Explorer 5.0, it will look like Figure 13-2 Figure 13-2: An XML document As can be seen from the figure, the XML document is displayed in the form of a tree view, which can be expanded and collapsed Any XML document that you open in Internet... using ASP.NET Summary In this chapter, you were introduced to XML and its related specifications, such as DTD, XML Schema, XSL/T, namespaces, and XML DOM You also learned about the System.Xml namespace provided in ASP.NET for working with XML documents Then, you looked at some simple applications of using XML with ASP.NET Finally, you learned about binding ASP.NET server controls to data from an XML document... object of the XMLDocument class § Transform: Enables you to specify a reference to an object of the XMLTransform class All four properties can be changed programmatically by providing an ID to the XML server-side control To use the XML server-side control in ASP.NET, you can use the following syntax: . before you look at its use in ASP. NET. In this chapter, you will learn about XML and its related specifications. You will also learn to use XML documents in ASP. NET. Introduction to XML. informs the browser that the document being processed is an XML document. Note XML documents have the extension .xml. When you open the preceding XML document in Internet Explorer 5.0, it will. When you open this HTML document in a browser, such as Internet Explorer 5.0, it will look like Figure 13-1. Figure 13-1: An HTML document Now, let's create an XML document that represents