Practical Database Programming With Visual C#.NET- P13

Chia sẻ: Thanh Cong | Ngày: | Loại File: PDF | Số trang:50

0
51
lượt xem
8
download

Practical Database Programming With Visual C#.NET- P13

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Homework 623 5. The _______ operator should be used as an assignment operator for the WHERE clause with a dynamic parameter for a data query in Oracle database. a. =: b. LIKE c. = d. @ 6. To test a data deleting stored procedure built in the Object Browser page in Oracle database, one can _______ the stored procedure to make sure it works. a. Build b. Test c. Debug d. Compile 7. To test a data updating stored procedure built in the Server Explorer window for the SQL Server database, one can _______ the stored procedure to make sure it works....

Chủ đề:
Lưu

Nội dung Text: Practical Database Programming With Visual C#.NET- P13

  1. Homework 623 5. The _______ operator should be used as an assignment operator for the WHERE clause with a dynamic parameter for a data query in Oracle database. a. =: b. LIKE c. = d. @ 6. To test a data deleting stored procedure built in the Object Browser page in Oracle database, one can _______ the stored procedure to make sure it works. a. Build b. Test c. Debug d. Compile 7. To test a data updating stored procedure built in the Server Explorer window for the SQL Server database, one can _______ the stored procedure to make sure it works. a. Build b. Execute c. Debug d. Compile 8. To update data in an Oracle database using the UPDATE command, the data types of the parameters in the SET list should be ________. a. OleDbType b. SqlDbType c. OracleDbType d. OracleType 9. To update data using stored procedures, the CommandType property of the Command object must be equal to ___________. a. CommandType.InsertCommand b. CommandType.StoredProcedure c. CommandType.Text d. CommandType.Insert 10. To update data using stored procedures, the CommandText property of the Command object must be equal to ___________. a. The content of the CommandType.InsetCommand b. The content of the CommandType.Text c. The name of the Insert command d. The name of the stored procedure III. Exercises 1. A stored procedure developed in the SQL Server database is shown in Figure 7.48. Please develop a piece of code in Visual C#.NET to call this stored procedure to update a record in the database. 2. A piece of code developed in Visual C#.NET is shown in Figure 7.49. This coding is used to call a stored procedure in the Oracle database to update a record in the database. Please create the associated stored procedure in the Oracle database using the PL- SQL language.
  2. 624 Chapter 7 Data Updating and Deleting with Visual C#.NET 3. Using the tools and wizards provided by Visual Studio.NET and ADO.NET to perform the data updating for the Student Form in the AccessUpdateDeleteWizard project (the project file is located at the folder DBProjects\Chapter 7 that can be found from the accompanying ftp site (see Chapter 1)). 4. Using the runtime objects method to complete the update data query for the Student Form by using the project SQLUpdateDeleteRTObject (the project file is located at the folder DBProjects\ Chapter 7 found at the accompanying ftp site (see Chapter 1)). 5. Using the stored procedure to complete the data updating query for the Student Form to the Student table by using the project OracleUpdateDeleteSP (the project file is located at the folder DBProjects\Chapter 7 found at the accompanying ftp site (see Chapter 1)). 6. Using the stored procedure to complete the data deleting query for the Student Form to the Student table by using the project OracleUpdateDeleteSP (the project file is located at the folder DBProjects\Chapter 7 found at the accompanying ftp site (see Chapter 1)). It is highly recom- mended to recover those deleted records after they are deleted. Hints: Four tables are involved in this data deleting action: Student, LogIn, Course, and the StudentCourse tables. The recovery order is, first, recover the record from the parent table (Student table), and then recover all other records for all other tables. CREATE OR REPLACE PROCEUDRE dbo.UpdateStudent ( @Name IN VARCHAR(20), @Major IN text, @SchoolYear IN int, @Credits IN float, @Email IN text @StudentName IN VARCHAR(20)) AS UPDATE Student SET name=@Name, major=@Major, schoolYear=@SchoolYear, credits=@Credits, email=@Email WHERE (name=@StudentName) RETURN Figure 7.48 string cmdString = "UpdateCourse"; int intInsert = 0; OracleCommand oraCommand = new OracleCommand(); oraCommand.Connection = oraConnection; oraCommand.CommandType = CommandType.StoredProcedure; oraCommand.CommandText = cmdString; oraCommand.Parameters.Add("Name", OracleType.Char).Value = ComboName.Text; oraCommand.Parameters.Add("CourseID", OracleType.Char).Value = txtCourseID.Text; oraCommand.Parameters.Add("Course", OracleType.Char).Value = txtCourse.Text; oraCommand.Parameters.Add("Schedule", OracleType.Char).Value = txtSchedule.Text; oraCommand.Parameters.Add("Classroom", OracleType.Char).Value = txtClassRoom.Text; oraCommand.Parameters.Add("Credit", OracleType.Char).Value = txtCredits.Text; oraCommand.Parameters.Add("StudentID", OracleType.Char).Value = txtID.Text; intInsert = oraCommand.ExecuteNonQuery(); Figure 7.49
  3. Chapter 8 Accessing Data in ASP.NET We have provided a very detailed discussion on database programming with Visual C#.NET using the Windows-based applications in the previous chapters. Starting with this chapter, we will concentrate on database programming with Visual C#.NET using Web-based applications. To develop the Web-based application and allow users to access the database through the Internet, you need to understand an important component: Active Server Page.NET or ASP.NET. Essentially, ASP.NET allows users to write software to access databases through a Web browser rather than a separate program installed on their computers. With the help of ASP.NET, the users can easily create and develop an ASP.NET Web application and run it on the server as a server-side project. The user then can send requests to the server to download any Web page and to access the database to retrieve, display, and manipulate data via the Web browser. The actual language used in the communications between the client and the server is Hypertext Markup Language (HTML). When finished this chapter, you will: • Understand the structure and components of ASP.NET Web applications. • Understand the structure and components of .NET Framework. • Select data from the database and display data in a Web page. • Understand the Application state structure and implement it to store global variables. • Understand the AutoPostBack property and implement it to communicate with the server effectively. • Insert, update, and delete data from the database through a Web page. • Use the stored procedure to perform the data actions against the database via a Web application. • Use LINQ to SQL query to perform the data actions against the database via a Web application. • Perform client-side data validation in Web pages. In order to help readers to successfully complete this chapter, first we need to provide a detailed discussion about the ASP.NET. But the prerequisite to understanding the ASP.NET is the .NET Framework since the ASP.NET is a part of .NET Framework, or in other words, the .NET Framework is the foundation of the ASP.NET. So we need first to give a detailed discussion about the .NET Framework. Practical Database Programming With Visual C#.NET, by Ying Bai Copyright © 2010 the Institute of Electrical and Electronics Engineers, Inc. 625
  4. 626 Chapter 8 Accessing Data in ASP.NET 8.1 WHAT IS .NET FRAMEWORK? The .NET Framework is a model that provides a foundation to develop and execute dif- ferent applications at an integrated environment such as Visual Studio.NET. In other words, the .NET Framework can be considered as a system to integrate and develop multiple applications such as Windows applications, Web applications, or XML Web Services by using a common set of tools and codes such as Visual C#.NET or Visual Basic.NET. The current version of the .NET Framework is 3.5. Basically, the .NET Framework consists of the following components: • The Common Language Runtime—CLR (called runtime). The runtime handles runtime services such as language integration, security, and memory management. During the development stage, the runtime provides features that are needed to simplify the development. • Class Libraries. Class libraries provide reusable codes for most common tasks such as data access, XML Web service development, and Web and Windows forms. The main goal to develop the .NET Framework is to overcome several limitations on Web applications since different clients may provide different client browsers. To solve these limitations, .NET Framework provides a common language called Microsoft Intermediate Language (MSIL) that is language independent and platform independent, and allows all programs developed in any .NET-based language to be converted into this MSIL. The MSIL can be recognized by the Common Language Runtime (CLR), and the CLR can compile and execute the MSIL codes by using the Just-In-Time compiler located at the local machines or clients. You access the .NET Framework by using the class libraries provided by the .NET Framework, and you implement the .NET Framework by using the tools such as Visual Studio.NET provided by the .NET Framework, too. All class libraries provided by the .NET Framework are located at the different namespaces. All .NET-based languages access the same libraries. A typical .NET Framework model is shown in Figure 8.1. The .NET Framework supports three types of user interfaces: Clients ASP.NET Web Developer Applications Tools .NET Framework XML Web Services Database Figure 8.1 A .NET Framework model.
  5. 8.2 What Is ASP.NET and ASP.NET 3.5? 627 • Windows Forms that run on Windows 32 client computers. All projects we developed in the previous chapters used this kind of user interface. • Web Forms that run on Server computers through ASP.NET and the Hypertext Transfer Protocol (HTTP). • The Command Console. The advantages of using the .NET Framework to develop Windows-based and Web- based applications include but are no limited to: • The .NET Framework is based on Web standards and practices, and it fully supports Internet technologies, including HTML, HTTP, XML, Simple Object Access Protocol (SOAP), XML Path Language (XPath), and other Web standards. • The .NET Framework is designed using unified application models, so the functional of any class provided by the .NET Framework is available to any .NET-compatible language or programming model. The same piece of code can be implemented in Windows applications, Web applications, and XML Web Services. • The .NET Framework is easy for developers to use since the code in the .NET Framework is organized into hierarchical namespaces and classes. The .NET Framework provides a common type system, which is called the unified type system, and it can be used by any .NET-compatible language. In the unified type system, all language elements are objects that can be used by any .NET application written in any .NET-based language. Now let’s take a closer look at the ASP.NET. 8.2 WHAT IS ASP.NET AND ASP.NET 3.5? ASP.NET is a programming framework built on the .NET Framework, and it is used to build Web applications. Developing ASP.NET Web applications in the .NET Framework is very similar to developing Windows-based applications. An ASP.NET Web application is composed of many different parts and components, but the fundamental component of ASP.NET is the Web Form. A Web Form is the Web page that users view in a browser, and an ASP.NET Web application can contain one or more Web Forms. A Web Form is a dynamic page that can access server resources. The current version of the ASP.NET is 3.5, which is combined with .NET Framework 3.5 to provide a professional and convenient way to help users build and develop a variety of data-driven applications in .NET programming languages. Compared with the progres- sion from ASP.NET 2.0, the features in ASP.NET 3.5 are additive, which means that the core assemblies installed from the .NET Framework 2.0 are still used by the 3.5 version. In short, ASP.NET 3.5 does not change, take away, or break any function, concepts, or code present in 2.0, but it simply adds new types and features and capabilities to the framework. Therefore, ASP.NET 3.5 is a rather minor upgrade from ASP.NET 2.0; that is, there are not many new ASP.NET-specific features in the .NET Framework 3.5. There are three new features worth noting in ASP.NET 3.5: • Integrated ASP.NET AJAX support • The ListView control • The DataPager control
  6. 628 Chapter 8 Accessing Data in ASP.NET Clients ASP.NET Web Server Web Default. Forms Output Cache Web. aspx config Code- behind Internet Default2. pages aspx machine. config Global. asax Web Services XML Data Components Database Figure 8.2 Structure of an ASP.NET Web application. Besides these new features, one of the most significant differences between ASP.NET 3.5 and ASP.NET 2.0 is that the LINQ support is added to ASP.NET 3.5. LINQ provides a revolutionary solution between the different query syntaxes used in the different databases and bridges the gap between the world of objects and the world of data. A completed structure of an ASP.NET Web application is shown in Figure 8.2. Unlike a traditional Web page that can run scripts on the client, an ASP.NET Web Form can also run server-side codes to access databases, to create additional Web Forms, or to take advantage of built-in security of the server. In addition, since an ASP.NET Web Form does not rely on client-side scripts, it is independent on the client’s browser type or operating system. This independence allows users to develop a single Web Form that can be viewed on any device that has Internet access and a Web browser. Because ASP.NET is part of the .NET Framework, the ASP.NET Web application can be developed in any .NET-based language. The ASP.NET technology also supports XML Web Services. XML Web Services are distributed applications that use XML for transferring information between clients, applications, and other XML Web Services. The main parts of an ASP.NET Web application include: • Web Forms or Default.aspx pages. The Web Forms or Deafult.aspx pages provide the user interface for the Web application, and they are very similar to the Windows Forms in the Windows-based application. The Web Forms files are indicated with an extension of .aspx. • Code-behind pages. The so-called code-behind pages are related to the Web Forms and contain the server-side codes for the Web Form. This code-behind page is very similar to the code window for the Windows Forms in a Windows-based application we discussed in the previous chapters. Most event methods or handlers associated with controls on the Web Forms are located in this code-behind page. The code-behind pages are indicated with an extension of .aspx.cs. • Web Services or .asmx pages. Web services are used when you create dynamic sites that will be accessed by other programs or computers. ASP.NET Web Services may be supported by a code-behind page designed by the extension of .asmx.cs.
  7. 8.2 What Is ASP.NET and ASP.NET 3.5? 629 • Configuration files. The Configuration files are XML files that define the default settings for the Web application and the Web server. Each Web application has one Web.config configuration file, and each Web server has one machine.config file. • Global .asax file. The Global.asax file, also known as the ASP.NET application file, is an optional file that contains code for responding to application-level events that are raised by ASP.NET or by HttpModules. At runtime, Global.asax is parsed and compiled into a dynamically generated .NET Framework class that is derived from the HttpApplication base class. This dynamic class is very similar to the Application class or main thread in Visual C++, and this class can be accessed by any other objects in the Web application. • XML Web service links. These links are used to allow the Web application to send and receive data from an XML Web service. • Database connectivity. The Database connectivity allows the Web application to transfer data to and from database sources. Generally, it is not recommended to allow users to access the database from the server directly because of security issues. Instead, in most industrial and commercial applications, the database can be accessed through the application layer to strengthen the security of the databases. • Caching. Caching allows the Web application to return Web Forms and data more quickly after the first request. 8.2.1 ASP.NET Web Application File Structure When you create an ASP.NET Web application, Visual Studio.NET creates two folders to hold the files that relate to the application. When the project is compiled, a third folder is created to store the terminal dll file. In other words, the final or terminal file of an ASP.NET Web application is a dynamic linked library file (.dll). Figure 8.3 shows a typical file structure of an ASP.NET Web application. The folders on the left side in Figure 8.3 are very familiar to us since they are created by the Windows-based applications. But the folders on the right side are new to us, and the functions of those folders are: ProjectName.csproj My Documents Inetpub Default.aspx Default.aspx.cs (Code-behind page) Visual Studio wwwroot Projects bin Solution ProjectName ProjectName.dll Solution.sln Development Files Assembly Files Figure 8.3 ASP.NET Web application file structure.
  8. 630 Chapter 8 Accessing Data in ASP.NET • The Inetpub folder contains another folder named wwwroot, and it is used to hold the root address of the Web project whose name is defined as ProjectName. The project file ProjectName.csproj is an XML file that contains references to all project items, such as forms and classes. • The bin folder contains the assembly file or the terminal file of the project with the name of ProjectName.dll. All ASP.NET Web applications will be finally converted to a dll file and stored in the server’s memory. 8.2.2 ASP.NET Execution Model When you finished an ASP.NET Web application, the Web project is compiled and two terminal files are created: 1. Project Assembly files (.dll). All code-behind pages (.aspx.cs) in the project are compiled into a single assembly file that is stored as ProjectName.dll. This project assembly file is placed in the bin directory of the Web site and will be executed by the Web server as a request is received from the client at running time. 2. AssemblyInfo.cs file. This file is used to write the general information, specially assembly version and assembly attributes, about the assembly. As a Web project runs and the client requests a Web page for the first time, the fol- lowing events occur: 1. The client browser issues a GET HTTP request to the server. 2. The ASP.NET parser interprets the course code. 3. Based on the interpreting result, ASP.NET will direct the request to the associated assembly file (.dll) if the code has been compiled into the dll files. Otherwise, the ASP.NET invokes the compiler to convert the code into the dll format. 4. Runtime loads and executes the Microsoft Intermediate Language (MSIL) codes and sends back the required Web page to the client in the HTML file format. For the second time when the user requests the same Web page, no compiling process is needed, and the ASP.NET can directly call the dll file and execute the MSIL code to speed up this request. From this execution sequence, it looks like the execution or running of a Web appli- cation is easy and straightforward. However, in practice, a lot of data round trips occurred between the client and the server. To make it clear, let’s continue the discussion and analysis of this issue and see what really happens between the client and the server as a Web application is executed. 8.2.3 What Really Happens When a Web Application Is Executed? The key point is that a Web Form is built and run on the Web server. When the user sends a request from the user’s client browser to request that Web page, the server needs to build that form and send it back to the user’s browser in the HTML format. Once the
  9. 8.2 What Is ASP.NET and ASP.NET 3.5? 631 Web page is received by the client’s browser, the connection between the client and the server is terminated. If the user wants to request any other page or information from the server, additional requests must be submitted. To make this issue more clear, we can use our LogIn Form as an example. The first time the user sends a request to the server to ask to start a logon process, the server builds the LogIn Form and sends it back to the client in the HTML format. After that, the connection between the client and the server is gone. After the user receives the LogIn Web page and enters the necessary logon information such as the username and password to the LogIn Form, the user needs to send another request to the server to ask the server to process those pieces of logon information. After the server receives and processes the logon information, if the server finds that the logon information is invalid, the server needs to rebuild the LogIn Form and resend it to the client with some warning message. Therefore, you can see how many round trips occurred between the client and the server as a Web application is executed. A good solution to try to reduce these round trips is to make sure that all the infor- mation entered from the client side is as correct as possible. In other words, try to make as much validation as possible on the client side to reduce the burden of the server. Now we have finished the discussion about the .NET Framework and ASP.NET as well as the ASP.NET Web applications. Next we will create and develop some actual Web projects using the ASP.NET Web Forms to illustrate how to access the database through the Web browser to select, display, and manipulate data on Web pages. 8.2.4 Requirements to Test and Run a Web Project Before we can start to create our real Web project using the ASP.NET, we need the fol- lowing requirements to test and run our Web project: 1. Web server: To test and run our Web project, you need a Web server either on your local computer or on your network. By default, if you installed the Internet Information Services (IIS) on your local computer before the .NET Framework is installed on your computer, the FrontPage Server Extension 2000 should have been installed on your local computer. This software allows your Web development tools such as Visual Studio.NET to connect to the server to upload or download pages from the server. 2. In this chapter, in order to make our Web project simple and easy, we always use our local computer as a pseudoserver. In other words, we always use the localhost, which is the IP name of our local computer, as our Web server to communicate with our browser to perform the data accessing and manipulating. If you have not installed the IIS on your computer, follow the steps below to install this component on your computer: • Click on Start, then click on Control Panel, and click on Add or Remove Programs. • Click on Add/Remove Windows Components. The Windows Components Wizard appears, which is shown in Figure 8.4. • Check the checkbox for the Internet Information Services (IIS) from the list to add the IIS to your computer. To confirm that this installation contains the installation of the FrontPage 2000 Server Extensions, click on the Details button to open the IIS dialog box.
  10. 632 Chapter 8 Accessing Data in ASP.NET Figure 8.4 Opened Windows Components dialog box. Check on the checkbox for the FrontPage 2000 Server Extensions to select it if it is not checked. Although Microsoft has stopped supporting this version of the server and the current version is FrontPage 2002 Server Extensions, you can still use it without any problem. • Click on the OK button to close the IIS dialog box. • Click on the Next button to begin to install the IIS and the FrontPage 2000 Server Extensions to your computer. You may be asked to insert the Windows XP SP2 Operating System CD into your CD drive since this installation needs some files in that system disk. Just follow the instructions to do that to complete this installation. Click on the Finish button to close the Windows Components Wizard when this installation is finished. You may need to contact the administrator at your college to get this system CD if you do not have one. You must reboot your computer to make this installation complete. As you know, the .NET Framework includes two Data Providers for accessing enter- prise databases: the .NET Framework Data Provider for OLE DB and the .NET Framework Data Provider for SQL Server. Because there is no significant difference between the Microsoft Access database and the SQL Server database, in this chapter we only use the SQL Server database and the Oracle database as our target databases to illustrate how to select, display, and manipulate data against our sample database through the Web pages. This chapter is organized as follows: 1. Develop ASP.NET Web application to select and display data from the Microsoft SQL Server database.
  11. 8.3 Develop ASP.NET Web Application to Select Data from SQL Server Databases 633 2. Develop ASP.NET Web application to insert data into the Microsoft SQL Server database. 3. Develop ASP.NET Web application to update and delete data against the Microsoft SQL Server database. 4. Develop ASP.NET Web application to select and manipulate data against the Microsoft SQL Server database using LINQ to SQL query. 5. Develop ASP.NET Web application to select and display data from the Oracle database. 6. Develop ASP.NET Web application to insert data into the Oracle database. 7. Develop ASP.NET Web application to update and delete data against the Oracle database. Let’s start with the first one in this list to create and build our ASP.NET Web application. 8.3 DEVELOP ASP.NET WEB APPLICATION TO SELECT DATA FROM SQL SERVER DATABASES Let’s start a new ASP.NET Web application project SQLWebSelect to illustrate how to access and select data from the database via the Internet. Open the Visual Studio.NET and click on the File|New Web Site to create a new ASP.NET Web application project. On the opened New Web Site dialog box, which is shown in Figure 8.5, keep the default template ASP.NET Web Site selected and the default content of Location box unchanged. Select Visual C# from the Language box and then enter the project name SQLWebSelect into the box that is next to the Browse button, as shown in Figure 8.5. Figure 8.5 Opened Template dialog box.
  12. 634 Chapter 8 Accessing Data in ASP.NET You can place your new project in any folder you like on your computer. In our case, we place it in the folder C:\Book 6\Chapter 8. Click on the OK button to create this new Web application project. On the opened new project, the default Web form is named Default.aspx, and it is located at the Solution Explorer window. This is the Web form that works as a user interface on the server side. Now let’s perform some modifications to this form to make it our LogIn form page. 8.3.1 Create the User Interface—LogIn Form Right-click on this Default.aspx item and select the Rename item from the pop-up menu and change the name of this Web Form to LogIn.aspx since we want to use this default page as our LogIn page. Three buttons are located at the bottom of this window: Design, Split, and Source. The Design button is used to open the Web form page to allow users to insert any control onto that page. The Source button is used to open the Source file that basically is an HTML file that contains the related codes for all the controls you added into this Web Form in the HTML format. The Split button is used to divide the full window into two parts: the Design view and Source view. Compared with the codes in the code-behind page, the difference between them is that the Source file is used to describe all controls you added into the Web Form in HTML format, but the code-behind page is used to describe all controls you added into the Web form in Visual C#.NET code format. Note that the code line is inside the code body: . This coding line indicates that this Web form will be run at the server side as the project runs. Now let’s click on the View Designer button from the Solution Explorer window to open the Design view to design our Web form window. Unlike the Windows-based application, by default the user interface in the Web- based application has no background color. You can modify the Web form by adding another Style Sheet and format the form as you like. Also if you want to change some styles such as the header and footer of the form applied to all of your pages, you can add a Master Page to do that. But in this project we prefer to use the default window as our user interface and each page in our project has a different style. We need to add the controls into our LogIn user interface or Web page as shown in Table 8.1. Note that there is no Name property available for any control in the Web form object, instead the property ID is used to replace the Name property and it works as a unique identifier for each control you added into the Web form. Another difference with the Windows-based form is that when you add these controls into our Web form, first you must locate a position for the control to be added using the Space key and the Enter key on your keyboard in the Web form, and then pick up a control from the Toolbox window and drag it to that location. You cannot pick and drag a control to a random location in this Web form, and this is a significant difference between the Windows-based form and the Web-based form windows. Your finished user interface should match the one shown in Figure 8.6.
  13. 8.3 Develop ASP.NET Web Application to Select Data from SQL Server Databases 635 Table 8.1 Controls for the LogIn Form Type ID Text TabIndex BackColor TextMode Font Label Label1 Welcome to CSE DEPT 00 #E0E0E0 Bold/Large Label Label2 User Name 11 Bold/Small Textbox txtUserName 2 Label Label3 Pass Word 33 Bold/Small Textbox txtPassWord 4 Password Button cmdLogIn LogIn 55 Bold/Medium Button cmdCancel Cancel 66 Bold/Medium Figure 8.6 Finished LogIn Web form. Before we can add the codes into the code-behind page in response to the controls to perform the logon process, first we must run the project to allow the web.config file to recognize those controls added into the Web form. Click on the Start Debugging button on the toolbar to run our project. Click on OK to a prompted window to add a Web.config file with debugging enabled. Your running Web page should match the one shown in Figure 8.6. Click on the Close button located at the upper-right corner of the form to close this page. Now let’s develop the codes to access the database to perform the logon process. 8.3.2 Develop Codes to Access and Select Data from Database Open the code-behind page by clicking on the View Code button from the Solution Explorer window. First, we need to add an SQL Server data provider-related namespace as we did for those projects in the previous chapters. Add the following namespace to the top of this code window to involve the namespace of the SQL Server Data Provider:
  14. 636 Chapter 8 Accessing Data in ASP.NET _Default Page_Load() ……… A using System.Data.SqlClient; public partial class _Default : System.Web.UI.Page { B public SqlConnection sqlConnection; protected void Page_Load(object sender, EventArgs e) { C string sqlString = "Server=localhost;Data Source=.\\SQLEXPRESS;" + "Database=C:\\database\\SQLServer\\CSE_DEPT.mdf;Integrated Security=SSPI"; D sqlConnection = new SqlConnection(sqlString); E Application["sqlConnection"] = sqlConnection; //define a global connection object F if (sqlConnection.State == ConnectionState.Open) sqlConnection.Close(); G sqlConnection.Open(); H if (sqlConnection.State != ConnectionState.Open) Response.Write("alert('Database connection is Failed')"); } } Figure 8.7 Coding for the Page_Load method. using System.Data.SqlClient; Next we need to create a class or field-level variable, sqlConnection, for our connec- tion object. Enter the following code under the class header: public SqlConnection sqlConnection; This connection object will be used by all Web forms in this project later. Now we need to perform the coding for the Page_Load() method, which is similar to the Form_Load() method in the Windows-based application. Open this event method and enter the codes shown in Figure 8.7 into this method. Let’s take a closer look at this piece of code to see how it works. A. An SQL Server data provider related namespace is added into this project since we need to use those data components to perform data actions against our sample SQL Server database later. B. A class-level Connection object is declared first, and this object will be used by all Web forms in this project later to connect to our sample database. C. As we did for the Form_Load() method in the Windows-based applications, we need to perform the database connection job in this Page_Load() method. A connection string is created with the database server name, database name, and security mode. D. A new database Connection object is created with the connection string as the argument. E. The Connection object sqlConnection is added into the Application state function, and this object can be used by any pages in this application by accessing this Application state function later. Unlike global variables in the Windows-based applications, one cannot access a class variable by prefixing the form’s name before the class variable declared in that form from other pages. In the Web-based application, the Application state function is a good place to store any global variable. In ASP.NET Web application, the Application state is stored in an instance of the HttpApplicationState class, which can be accessed
  15. 8.3 Develop ASP.NET Web Application to Select Data from SQL Server Databases 637 through the Application property of the HttpContext class in the server side and is faster than storing and retrieving information in a database. F. First, we need to check whether this database connection has been done. If it has, we need first to disconnect this connection by using the Close() method. G. Then we can call the Open() method to set up the database connection. H. By checking the database connection state property, we can confirm the connection we did. If the connection state is not equal to Open, which means that the database connection has failed, a warning message is displayed and the procedure is exited. One significant difference in using the Message box to display some debugging infor- mation in the Web form is that you cannot use a Message box as you did in the Windows- based applications. In the Web form development, no Message box is available, and you can only use the Javascript alert() method to display a Message box in ASP.NET. Two popular objects are widely utilized in the ASP.NET Web applications: The Request and the Response objects. The ASP Request object is used to get information from the user, and the ASP Response object is used to send output to the user from the server. The Write() method of the Response object is used to display the message sent by the server. You must add the script tag …… to indicate that the content is written in Javescript language. Now let’s perform the coding for the LogIn button’s Click method. The function of this piece of coding is to access the LogIn table located in our sample SQL Server data- base based on the username and password entered by the user to try to find the matched logon information. Currently, since we have not created our next page—Selection page— we just display a Message box to confirm the success of the logon process if it is. Click on the View Design button from the Solution Explorer window and then double-click on the LogIn button to open its Click method. Enter the codes shown in Figure 8.8 into this method. Let’s take a closer look at this piece of code to see how it works. A. An SQL query statement is declared first since we need to use this query statement to retrieve the matched username and password from the LogIn table. Because this query statement is relatively long, we split it into two substrings. B. All data objects related to the SQL Server Data Provider are created here, such as the Command object and DataReader object. C. The Command object is initialized and built by assigning it with the Connection object, commandType, and Parameters collection properties of the Command class. The Add() method is utilized to add two actual dynamic parameters to the Parameters collection of the Command class. D. The ExecuteReader() method of the Command class is executed to access the database, retrieve the matched username and password, and return them to the DataReader object. E. If the HasRows property of the DataReader is true, at least one matched username and password has been found and retrieved from the database. A successful message is created and sent back from the server to the client to display it in the client browser. F. Otherwise, no matched username or password has been found from the database, and a warning message is created and sent back to the client and displayed in the client browser. G. The used objects such as the Command and the DataReader are released.
  16. 638 Chapter 8 Accessing Data in ASP.NET _Default cmdLogIn_Click() protected void cmdLogIn_Click(object sender, EventArgs e) { A string cmdString = "SELECT user_name, pass_word, faculty_id, student_id FROM LogIn "; cmdString += "WHERE (user_name=@name) AND (pass_word=@word)"; B SqlCommand sqlCommand = new SqlCommand(); SqlDataReader sqlReader; C sqlCommand.Connection = sqlConnection; sqlCommand.CommandType = CommandType.Text; sqlCommand.CommandText = cmdString; sqlCommand.Parameters.Add("@name", SqlDbType.Char).Value = txtUserName.Text; sqlCommand.Parameters.Add("@word", SqlDbType.Char, 8).Value = txtPassWord.Text; D sqlReader = sqlCommand.ExecuteReader(); E if (sqlReader.HasRows == true) { Response.Write("alert('LogIn is successful!')"); } F else Response.Write("alert('No matched username/password found!')"); G sqlCommand.Dispose(); sqlReader.Close(); } Figure 8.8 Coding for the LogIn button’s Click method. _Default cmdCancel_Click() protected void cmdCancel_Click(object sender, EventArgs e) { A if (sqlConnection.State == ConnectionState.Open) sqlConnection.Close(); B Response.Write("window.close()"); } Figure 8.9 Coding for the Cancel button’s Click method. Next let’s make the coding for the Cancel button’s Click method. The function of this method is to close the current Web page if one clicks on this Cancel button, which means that the user wants to terminate the ASP.NET Web application. Double-click on the Cancel button from the Design View of the LogIn Form to open this method and enter the codes shown in Figure 8.9 into this method. The function of this piece of code is: A. First, we need to check whether the database is still connected to our Web form. If it is, we need to close this connection before we can terminate our Web application. B. The server sends back a command with the Response object’s method Write() to issue a Javascript statement window.close() to close the Web application. At this point, we have finished developing the codes for the LogIn Web form. Before we can run the project to test our Web page, we need to add some data validation func- tions in the client side to reduce the burden of the server.
  17. 8.3 Develop ASP.NET Web Application to Select Data from SQL Server Databases 639 Table 8.2 Validation Controls Validation Control Functionality RequiredFieldValidator Validate whether the required field has valid data (not blank). RangeValidator Validate whether a value is within a given numeric range. The range is defined by the MaximumValue and MinimumValue properties provided by users. CompareValidator Validate whether a value fits a given expression by using the different Operator property such as 'equal', 'greater than', 'less than' and the type of the value, which is setting by the Type property. CustomValidator Validate a given expression using a script function. This method provides the maximum flexibility in data validation but one needs to add a function to the Web page and sends it to the server to get the feedback from it. RegularExpressionValidator Validate whether a value fits a given regular expression by using the ValidationExpression property, which should be provided by the user. 8.3.3 Validate Data on Client Side As we mentioned in Section 8.2.3, in order to reduce the burden of the server, we should make every effort to perform the data validation on the client side. In other words, before we can send requests to the server, we need to make sure that the information to be sent to the server should be as correct as possible. ASP.NET provides some tools to help us to complete this data validation. These tools include five validation controls that are shown in Table 8.2. All of these five controls are located at the Validation tab in the Toolbox window in Visual Studio.NET environment. Here we want to use the first control, RequiredFieldValidator, to validate our two textboxes, txtUserName and txtPassWord, in the LogIn page to make sure that both are not empty when the user clicks on the LogIn button as the project runs. Open the Design View of the LogIn Web form, go to the Toolbox window, and click on the Validation tab to expand it. Drag the RequiredFieldValidator control from the Toolbox window and place it next to the username textbox. Set the following properties to this control in the property window: • ErrorMessage UserName is required • ControlToValidate txtUserName Perform the similar dragging and placing operations to place the second RequiredFieldValidator just next to the password textbox. Set the following properties for this control in the property window: • ErrorMessage PassWord is required • ControlToValidate txtPassWord Your finished LogIn Web form should match the one shown in Figure 8.10. Now run our project to test this data validation by clicking on the Start Debugging button, without entering any data into two textboxes, and then click on the LogIn button. Immediately two error messages, which are created by the RequiredFieldValidators, are displayed to ask users to enter these two pieces of information. After entering the user- name and password, click on the LogIn button again; a successful login message is dis- played. So you can see how the RequiredFieldValidator works to reduce the processing load for the server.
  18. 640 Chapter 8 Accessing Data in ASP.NET Figure 8.10 Adding the data validation—RequiredFieldValidator. One good thing always brings some bad thing, which is true to our project, too. After the RequiredFieldValidator is added into our Web page, the user cannot close the page by clicking on the Cancel button if both username and password textboxes are empty. This is because the RequiredFieldValidator is performing the validation checking and no further action can be taken by the Web page until both textboxes are filled with some valid information. Therefore, if you want to close the Web page now, you have to enter a valid username and password, and then you can close the page by clicking on the Cancel button. 8.3.4 Create Second User Interface—Selection Page Now let’s continue to develop our Web application by adding another Web page, the Selection page. As we did in previous chapters, after the logon process is finisfhed, the next step is to allow users to select different functions from the Selection form to perform the associated database actions. The function of this Selection page is to allow users to visit different pages to perform the different database actions such as selecting, inserting, updating, or deleting data in the the database via the different tables by selecting the different items. Therefore, this Selection page needs to perform the following operations: 1. Provide and display all available selections to allow users to select them. 2. Open the associated page based on the users’ selection. Now let’s build this page. To do that, we need to add a new Web page. Right-click on the project icon from the Solution Explorer window and select the Add New Item from the pop-up menu. On the opened window, keep the default Template Web Form selected, and enter Selection.aspx into the Name box as the name for this new page,
  19. 8.3 Develop ASP.NET Web Application to Select Data from SQL Server Databases 641 Table 8.3 Controls for the Selection Form Type ID Text TabIndex BackColor Font Label Label1 Make Your Selection: 00 #E0E0E0 Bold/Large DropDownList ComboSelection 1 Button cmdSelect Select 22 Bold/Medium Button cmdExit Exit 33 Bold/Medium Figure 8.11 Finished Selection page. and then click on the Add button to add this page into our project. On the opened Web form, add the controls listed in Table 8.3 into this page. As we mentioned in the last section, before you pick up those controls from the Toolbox window and drag them into the page, you must first use the Space or the Enter keys on the keyboard to locate the positions on the page for those controls. Your finished Selection page should match the one shown in Figure 8.11. Next let’s create the codes for this Selection page to allow users to select the different page to perform the associated data actions. 8.3.5 Develop Codes to Open Other Page First, let’s run the Selection page to build the Web configuration file. Click on the Start Debugging button to run this page, and then click on the Close button located at the upper-right corner of the page to close it. Click on the View Code button from the Solution Explorer window to open the code page for the Selection Web form. First, let’s add an SQL Data Provider–related namespace to the top of this page to provide a reference to all data components of the SQL Data Provider: using System.Data.SqlClient; Then enter the codes shown in Figure 8.12 into the Page_Load() method to add all selection items into the combobox control ComboSelection to allow users to make their selection as the project runs.
  20. 642 Chapter 8 Accessing Data in ASP.NET Selection Page_Load() protected void Page_Load(object sender, EventArgs e) { ComboSelection.Items.Add("Faculty Information"); ComboSelection.Items.Add("Course Information"); ComboSelection.Items.Add("Student Information"); } Figure 8.12 Coding for the Page_Load method of the Selection page. Selection cmdSelect_Click() protected void cmdSelect_Click(object sender, EventArgs e) { if (ComboSelection.Text == "Faculty Information") Response.Redirect("Faculty.aspx"); else if (ComboSelection.Text == "Student Information") Response.Redirect("Student.aspx"); else if (ComboSelection.Text == "Course Information") Response.Redirect("Course.aspx"); } Figure 8.13 Coding for the Select button’s Click method. The function of this piece of code is straightforward. Three pieces of CSE Dept– related data are added into the combobox ComboSelection by using the Add() method, and these pieces of data will be selected by the user as the project runs. Next we need to create the codes for two buttons’ Click methods. First, let’s do the coding for the Select button. Click on the View Designer button from the Solution Explorer window to open the Selection Web form, and then double-click on the Select button to open its method. Enter the codes shown in Figure 8.13 into this method. The function of this piece of code is easy. Based on the information selected by the user, the related Web page is opened by using the server’s Response object, that is, by using the Redirect() method of the server’s Response object. These three pages will be created and discussed in the following sections. Finally let’s take care of the coding for the Exit button’s Click method. The function of this piece of code is to close the database connection and close the Web application. Double-click on the Exit button from the Design View of the Selection page to open this method. Enter the codes shown in Figure 8.14 into this method. First, we need to check if the database is still connected to our application. If it is, the global connection object stored in the Application state is activated with the Close() method to close the database connection. Then the Write() method of the server Response object is called to close the Web application. A key point is that the Application state function stores an object, the Connection object in this case. In order to access and use that Connection object stored in the Application global function, a casting (SqlConnection) must be clearly prefixed before that object; therefore, a two-layer parenthesis is used to complete this casting. Otherwise a compiling error will be encoun- tered since the compiler cannot recognize and convert the general object stored in the Application state function to a specific Connection object.
Đồng bộ tài khoản