mvc pdf : Batch convert pdf to tiff software application dll windows azure html web forms mastering_microsoft_visual_basic_net96-part627

Listing 21.10: Retrieving the Selected Customer’s Orders
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
Dim row As Integer = ListBox1.SelectedIndex
Dim CustID As String = DsCustomers1.Customers(row).CustomerID
Orders.SelectCommand.Parameters(“CustomerID”).Value =  CustID
DsOrders1.Clear()
Orders.Fill(DsOrders1)
End Sub
We must also detect the selection of a row in the DataGrid control with the Orders, retrieve the
detail lines of the selected order and display them on the second DataGrid control. When a row (or
cell) is selected on the DataGrid control, the CurrentCellChanged event is fired. Listing 21.11 shows
the code that displays the selected order’s details on the second DataGrid control.
Listing 21.11: Retrieving the Selected Order’s Details
Private Sub DataGrid1_CurrentCellChanged(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles DataGrid1.CurrentCellChanged
Dim row As Integer = DataGrid1.CurrentRowIndex
Dim OrdID As Integer = DataGrid1.Item(row, 0)
Details.SelectCommand.Parameters(“OrderID”).Value = OrdID
DsDetails1.Clear()
Details.Fill(DsDetails1)
End Sub
This is all the code required by the application, and it’s not complicated either. We determine the
parameter required by the query we want to call and then pass it to the query through the Parameters
collection of the SelectCommand object. Of course, you must set the data-binding properties of the
two DataGrid controls, so that they will update their contents when the underlying DataSets change.
To bind the two DataGrid controls, set their DataSource property to the name of the corresponding
DataSet.
The Command and DataReader Objects
Sometimes, we want to retrieve data from the database and read them sequentially. If you don’t plan
to edit the data and submit any changes back to the client, you can use the DataReader object to read
the rows sequentially. The DataReader is an object that lets you iterate through the rows retrieved by
a query. It’s faster than storing all the rows to a DataSet, but you can’t move back and forth in the
rows. Moreover, the connection to the database is open while you iterate through the rows, so the
processing should be as quick as possible. For example, you can’t prompt the user between rows; this
Chapter 21 BUILDING DATABASE APPLICATIONS WITH ADO.NET
956
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
Batch convert pdf to tiff - Convert PDF to tiff images in C#.net, ASP.NET MVC, Ajax, WinForms, WPF
Online C# Tutorial for How to Convert PDF File to Tiff Image File
pdf to tiff batch conversion; pdf to tiff file converter
Batch convert pdf to tiff - VB.NET PDF Convert to Tiff SDK: Convert PDF to tiff images in vb.net, ASP.NET MVC, Ajax, WinForms, WPF
Free VB.NET Guide to Render and Convert PDF Document to TIFF
convert pdf to tiff open source; online pdf to tiff converter
would tie the connection for too long. It goes without saying that you can’t use the DataReader object
to update the underlying table. The DataReader object returns a forward-only, read-only result.
As with the other major ADO.NET objects, there are two flavors of the DataReader object: the
SqlDataReader and the OleDbDataReader objects. Use the SqlDataReader object for SQL Server
databases and the OleDbDataReader for OLEDB-compliant databases. To create a DataReader
object, you must execute a query against a database through a Command object. You’ve already set
up Command objects, even though you didn’t do so explicitly. This time we’ll create a Command
object and set its Connection and CommandText properties from within our code. Once the Com-
mand object has been set up, you can execute it by calling one of the following methods:
ExecuteReader Executes the command and returns a DataReader object, which you can use to
read the results, one row at a time.
ExecuteXMLReader Executes the command and returns a XMLDataReader object, which you
can use to read the results, one row at a time.
ExecuteScalar Executes the command, returns the first column of the first row in the result,
and ignores all other rows.
ExecuteNonQuery Executes a SQL command against the database and returns the number of
rows affected. Use this method to execute a command that updates the database.
The first two methods return a DataReader object, the ExecuteNonQuery method returns an
integer (the number of rows affected), and the ExecuteScalar method returns an object (the first col-
umn of the first row in the result set). The DataReader is an abstract class and can’t be used in an
application. Instead, use the SqlDataReader or the OleDbDataReader object, depending on the
database you’re connected to.
VB.NET at Work: The DataReader Project
This section’s project demonstrates the simplest possible use of a SqlDataReader object. We’ll read
the category names from the Categories table and place them on a ListBox control. To test this code,
place an instance of the SqlConnection and SqlCommand controls on a new form. These two con-
trols must be selected from the Data tab of the Toolbox. They’re not configured, because they’re not
associated with any objects in the database. Let’s configure them.
Select the SqlConnection1object on the designer and open its Properties window. Locate the Con-
nectionString property and, from the drop-down list, select the Northwind database. Then select the
SqlCommand1object on the designer, open its Properties window, and locate the Connection prop-
erty. Expand the list of available connections and set it to SqlConnection1 (your project contains a
single Connection object). Then locate the CommandText property and click the button with the
ellipsis. This action will start the Query Builder, where you can create a query with the rows you want
to retrieve. Add the Categories table to the query and select the fields CategoryID and Category-
Name. Then click OK to close the Query Builder.
So far, you’ve established a connection to the Northwind database and created a command to
retrieve the names of all categories. All you have do now is to execute the command and process 
its results. 
957
THE COMMAND AND DATAREADER OBJECTS
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
C# PDF Convert to Jpeg SDK: Convert PDF to JPEG images in C#.net
NET. .NET library to batch convert PDF files to jpg image files. High quality jpeg file can be exported from PDF in .NET framework.
online convert pdf to tiff; convert pdf to tiff multiple pages
VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.
Word, VB.NET Excel, VB.NET PowerPoint, VB.NET Tiff, VB.NET Best and free VB.NET PDF to jpeg converter SDK for Visual NET components to batch convert adobe PDF
how to convert pdf to tiff; pdf to tiff converter c#
In our code we’ll use the ExecuteReader method to retrieve textual information. Place a Button
and a ListBox control on the form, and enter the statements from Listing 21.12 in the button’s
Click event handler.
Listing 21.12: Iterating the Rows of a SqlDataReader Object
Private Sub Button1_Click(ByVal sender As System.Object,_
ByVal e As System.EventArgs) Handles Button1.Click
SqlConnection1.Open()
Dim SQLReader As System.Data.SqlClient.SqlDataReader
SQLReader = SqlCommand1.ExecuteReader()
While SQLReader.Read
ListBox1.Items.Add(SQLReader.Item(“CategoryID”) & vbTab & _
SQLReader.Item(“CategoryName”))
End While
SqlConnection1.Close()
End Sub
First, the code opens the connection. Normally, the connection is opened by the DataAdapter
object when the application requests data, but this time we don’t have a DataAdapter object. Then it
calls the Command object’s ExecuteReader method and assigns the result to a SqlDataReader object.
The data isn’t stored in this object. Instead, we’ll use this object to iterate through the rows returned
by the query. This must take place from within a loop, which must go quickly through the data and
then close the connection.
The Read method of the SqlDataReader object returns true while there is more data to be read.
Each time you call the Read method, the DataReader moves to the next row, and you can read the
current row’s fields through the Item property. The Item property accepts as argument the name or
index of a column and returns its value. At each iteration of the loop, we read the two fields of the
current row and add them to the ListBox control.
VB.NET at Work: The StoredProcedure Project
The example of this section shows a slightly different method of retrieving just the information you
need to present to the user and no more. This time we’ll use one of the stored procedures we devel-
oped in Chapter 20. The OrdersPerCustomer stored procedure retrieves the number of orders
placed by a customer and the grand total of these orders. This stored procedure doesn’t place any
computational burden on the database server, because it applies to a single customer. What if the
user wanted to see the totals for several, or even many, customers? Would you write another proce-
dure that calculates the same totals for all customers? In a real database with thousands of customers
and many orders per customer, the computational burden is no longer insignificant.
To avoid having the computer perform unnecessary operations and return results that the user may
not even see, we’ll force users to select the customer whose totals they want. Figure 21.18 shows the
interface of the application. The user is expected to select a customer from the list on the left, and
then the selected customer’s totals will appear on the form. The totals are calculated as requested,
which may lead to many requests to the database server. However, each request is serviced in no time
Chapter 21 BUILDING DATABASE APPLICATIONS WITH ADO.NET
958
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
C# Create PDF from images Library to convert Jpeg, png images to
Batch convert PDF documents from multiple image formats, including Jpg, Png, Bmp, Gif, Tiff, Bitmap, .NET Graphics, and REImage.
bulk pdf to tiff converter; how to convert pdf to tiff format
C# Create PDF from OpenOffice to convert odt, odp files to PDF in
A professional .NET PDF control able to batch convert multiple OpenOffice documents to PDF files in C#.NET. Description: Convert to PDF/TIFF and save it on
create tiff from pdf; pdf to multipage tiff
at all, and it’s certainly more efficient than calculating the totals for all customers and moving the
information to the client; the user may only look at a few totals and just ignore the rest.
Start a new project and place on its form the controls you see in Figure 21.18. The ListBox control
must be populated with the names of all the companies in the Customers table. Drop the Customers
table from the Server Explorer onto the form and a new DataAdapter object will be added to the project.
Rename the DataAdapter to DACustomersand configure it so that it retrieves only the CustomerID
and CompanyName fields from the database. Here’s the DataAdapter’s SELECT statement:
SELECT CustomerID, CompanyName FROM dbo.Customers
Then generate the Customers DataSet and use it to populate the ListBox control. Set the con-
trol’s DataSource property to 
Customers1.Customers
, its DisplayMember property to Company-
Name, and ValueMember to CustomerID. Then call the DataAdapter’s Fill method from within the
form’s Load event handler:
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
DACustomers.Fill(Customers1)
End Sub
If you run the application now, the ListBox will be populated with the customers’ names. In the
control’s SelectedIndexChanged event handler, we must execute the OrdersPerCustomer procedure
to retrieve the two totals for the selected customer. To execute the stored procedure, add a SqlCom-
mand object to the form.
If you haven’t followed the examples in the previous chapter, you must add OrdersPerCustomer
to the Northwind database (the application expects that the stored procedure is part of the database
and will call it by name). To add a new stored procedure to a database, start Enterprise Manager,
locate the Stored Procedures section under the Northwind database, and from its context menu
select New Stored Procedure. Then add the definition shown in Listing 21.13 to the new stored
procedure and save it as OrdersPerCustomer.
Listing 21.13: The OrdersPerCustomer Stored Procedure
ALTER PROCEDURE dbo.OrdersPerCustomer
@CustomerID nchar(5)=’ALFKI’
AS
Figure 21.18
Retrieving informa-
tion from the data-
base with stored
procedures
959
THE COMMAND AND DATAREADER OBJECTS
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
C# PDF Convert to Images SDK: Convert PDF to png, gif images in C#
able to batch convert PDF documents to image formats in C#.NET. Support exporting PDF to multiple image forms, including Jpg, Png, Bmp, Gif, Tiff, Bitmap, .NET
convert pdf file to tiff format; how to convert pdf to tiff file
VB.NET PDF Convert to Images SDK: Convert PDF to png, gif images
components for batch convert high resolution images from PDF. Convert PDF documents to multiple image formats, including Jpg, Png, Bmp, Gif, Tiff, Bitmap, .NET
pdf to tiff file conversion; pdf converter to tiff online
SELECT   dbo.Customers.CompanyName,
COUNT(dbo.Orders.OrderID) AS [Total Orders],
dbo.Customers.CustomerID,
CAST(SUM((dbo.[Order Details].UnitPrice *
dbo.[Order Details].Quantity) *
(1 - dbo.[Order Details].Discount)) AS money) AS [Total Amount]
FROM     dbo.Customers
INNER JOIN dbo.Orders
ON dbo.Customers.CustomerID = dbo.Orders.CustomerID
INNER JOIN dbo.[Order Details]
ON dbo.Orders.OrderID = dbo.[Order Details].OrderID
GROUP BY dbo.Customers.CompanyName, dbo.Customers.CustomerID
HAVING   (dbo.Customers.CustomerID = @CustomerID)
Select the SqlCommand object from the Data tab of the Toolbox and drop it on the form. To
execute the stored procedure, set the SqlCommand object’s CommandText property to the name of
the stored procedure, set its CommandType to 
CommandType.StoredProcedure
, and then create a
new parameter and set it to the ID of the selected customer.
To set up a parameter, you must first create a Parameter object and add it to the Parameters col-
lection of the SqlCommand1object. The Parameter must be added to the collection only once. Then,
you must set the properties of the Parameter object. The two most important properties of the Para-
meter object are the Direction and Value properties. The Direction property determines whether the
parameter passes a value to the stored procedure, receives a value from the stored procedure, or both.
Its value can be one of the members of the ParameterDirection enumeration: 
Input
Output
,
InputOutput
, and 
ReturnValue
. The parameter’s Value is the ID of the selected customer, which is
given by the SelectedValue property of the ListBox control. The SelectedValue property returns the
value of the field specified with the ValueMember property.
The last step is to execute the command and accept the results into a SqlReader object. Listing 21.14
shows the code that’s executed when the user selects a different customer in the ListBox control.
Listing 21.14: Executing a Stored Procedure with the SqlCommand Object
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
SqlConnection1.Open()
SqlCommand1.CommandType = CommandType.StoredProcedure
SqlCommand1.CommandText = “OrdersPerCustomer”
If SqlCommand1.Parameters.Count = 0 Then
SqlCommand1.Parameters.Add(New _
System.Data.SqlClient.SqlParameter(“@CustomerID”, SqlDbType.NChar))
SqlCommand1.Parameters(0).Direction = ParameterDirection.Input
End If
SqlCommand1.Parameters(0).Value = ListBox1.SelectedValue.ToString
Dim SQLReader As System.Data.sqlclient.SqlDataReader
SQLReader = SqlCommand1.ExecuteReader
Chapter 21 BUILDING DATABASE APPLICATIONS WITH ADO.NET
960
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
VB.NET Image: PDF to Image Converter, Convert Batch PDF Pages to
project. If you are C# developers for PDF to image converting, please directly link here: C# Windows converting project to convert PDF to jpeg, png, tiff, etc.
how to convert pdf to tiff in; change pdf to tiff for
VB.NET Create PDF from CSV to convert csv files to PDF in vb.net
VB.NET Excel, VB.NET PowerPoint, VB.NET Tiff, VB.NET CSV file to adobe PDF converter component for Visual Studio Batch convert CSV formats to adobe PDF files.
convert pdf to grayscale tiff; program to automatically convert pdf to tiff
While SQLReader.Read
txtOrders.Text = SQLReader.Item(“Total Orders”).ToString
txtAmount.Text = SQLReader.Item(“Total Amount”).ToString
End While
SqlConnection1.Close()
End Sub
Summary
In this chapter, you’ve learned about the basic objects of ADO.NET through examples. You know
how to connect to a database, set up DataAdapter objects for each table you want to query, and pop-
ulate a DataSet object with one or more tables. The tables in a DataSet are usually related, but the
relations between tables are not copied from the database automatically. You must establish relations
between them by editing the XSD file with the schema of the DataSet
Once the data is in the DataSet, you can process it in any way you like. In this chapter, you
learned how to bind controls to the fields of the tables in the DataSet, so that users can navigate
through the rows of the tables and even edit them. The DataGrid control is a very flexible tool for
presenting multiple related tables, and you know how to use it in your applications. You also know
how to use the ListBox and ComboBox controls as lookup devices by binding them to a field in a
table.
In the following chapter, you’ll learn how to access the contents of a DataSet programmatically,
as well as how to update the database. You will also learn how to create DataSet objects in your 
code and how to save them to disk files. This technique allows you to create custom data stores or
exchange data with other systems.
961
SUMMARY
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
Chapter 22
Programming the
ADO.NETObjects
In the preceding chapter, 
you learned how to build applications that access databases with
point and click operations. Binding fields to controls isn’t your only option; it isn’t event the best
option. As you recall, the Update method can’t handle update errors. The DataGrid control isn’t
quite appropriate for editing rows either. It’s a great tool for displaying data, but it’s not the most
appropriate control for editing rows. A major limitation of the DataGrid control is that it can’t
display lookup fields. It can handle related rows, but at any given time it can only display the
rows of a single table—you can’t use the DataGrid control to display master/detail forms. To
keep a customer’s data, the customer’s orders, and an order’s details all visible on the form, we
had to use multiple DataGrid controls on our form.
Database applications aren’t trivial, and the process of building database applications can’t be
oversimplified. Throwing a few controls on the form and setting their data-binding properties
works for very simple applications, but for everything else you must provide quite a bit of code.
You must validate your data and minimize the amount of data moved back and forth between the
client and the server. The DataSet object’s Update method passes all the rows it contains to the
database and uses the SQL statements generated by the configuration wizard to update the under-
lying tables. In most cases, very few of the rows have been edited, and you should be able to trans-
mit only the rows that were added, deleted, or modified.
Another important consideration is how the DataSet is populated. Do we move all the data we
may need in the course of the application? This is what the DataSet object does best. It maintains
a copy of selected tables in the client computer’s memory, so that the application won’t have to
hit the server for every row the user may need to view. The more data you move into the DataSet,
the longer the user can work with the disconnected data. There are applications, however, where
this isn’t desirable. An invoicing application can’t keep the price list in memory for too long,
because prices may change in the database. It should also be able to update the current stock.
To build reliable, robust database applications, you must learn to program the objects exposed
by ADO.NET. You have seen how to use the Command and DataReader objects in the previous
chapter. In this chapter, you’ll learn how to access the data stored in the DataSet from within
your code and how to execute commands directly against the database. We’ll also explore the
DataForm wizard, a tool for building simple data-browsing and -editing applications.
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
The Structure of a DataSet
The main object of any ADO.NET application is the DataSet object, which is s a miniature data-
base that lives on the client. The main purpose of the Connection and DataAdapter objects is to
populate the DataSet object, as well as move information from the DataSet to the database and
update the underlying table(s). The basic concept behind ADO.NET is to move the required data
to the client, process them there, and then, optionally, update the database with the changes made by
the client application to the local data. The data on the client is a copy of the data on the server the
moment the DataSet was generated, and the DataSet is totally disconnected from the underlying
tables in the database.
The structure of the DataSet object is quite simple. VB6 programmers will have to get used to
living with client-side data, but those of you new to VB.NET will find the DataSet a convenient
method of working with subsets of tables. It’s made up of tables, which may or may not correspond
to tables of the database. You can bring in an entire table, like the Categories table. Or you can select
a few columns and/or a few rows from a table in the database and store them to a table in the Data-
Set. Finally, you can create a table by combining rows from multiple tables. For example, you can
execute a query that retrieves all product names from the Products table along with the name of the
category they belong to from the Categories tables and stores the returned rows to a new table in the
DataSet. It is also possible to add and drop tables from a DataSet at any time during the course of
the application.
Finally, you can create new tables from within your code. To do so, we create a DataTable object
to represent the new table and then a series of DataRow objects to represent the table’s rows. Each
row must have a data type, an optional default value, a length, and so on. You can create the same
table structures from within your code as you would do with the visual tools of Enterprise Manager.
After specifying the structure of the tables, you can add relations between them. Everything you can
do visually with the XSD Designer, you can also do from within your code. The process of estab-
lishing relations between tables using the Designer was described in the last chapter. The product
documentation discusses extensively how to create DataSets programmatically. You will find this
information useful in situations where the data comes from someone else’s database. As you will see
later in this chapter, it is possible to create a DataSet programmatically, populate it, and then store
its contents to a XML file. This chapter shows you how to use DataSets to manipulate databases,
which is what most of us will be doing anyway.
If the tables were totally independent of one another, the DataSet would be nothing more than a
collection of arrays. Yet it’s not. In addition to the tables, the DataSet maintains relations between
tables, as you have seen. If you need to see the product names along with the names of the categories
they belong to, you can bring both tables into the DataSet and establish a relationship between them.
DataSets are not aware of the data sources. The exchange of information between DataSets and
data sources (which, in most cases, are databases) takes place through the Data Adapter object,
described in Chapter 21. Each table in a DataSet has an associated Data Adapter object, whose func-
tion is to retrieve data from the underlying table and populate the DataSet, as well as update the
underlying table in the database with data from the DataSet.
The DataSet’s structure and its data are described with XML keywords. You don’t have to learn
much about XML, but if you open the XSD file, you’ll see the XML code that describes the struc-
ture of the DataSet. The data aren’t available at design time, but once you populate the tables of the
Chapter 22 PROGRAMMING THE ADO.NET OBJECTS
964
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
DataSet, the data will also be described in XML. The Data Adapter formats the data as XML docu-
ments and passes them to the DataSet. It also receives data in XML format from the DataSet and
updates the underlying tables in the database.
Navigating the Tables of a DataSet
In this section, we’re going to take a closer look at the structure of the DataSet and how it organizes
data in tables. You’ll learn how to enumerate the tables in the DataSet and how to iterate through
their rows and access the values of individual columns. The information in this section will enable
you to write applications for displaying data. Later in the chapter, we’ll take a closer look at tech-
niques for updating the tables in the data source.
The DataSet object exposes members for accessing its contents. The tables in a DataSet are
exposed through the Tables collection, which is made up of DataTable objects. If the tables are
related, the relations are exposed by the Relations collection, which is made up of DataRelation
objects. The following two loops print the names of the tables and relations in a DataSet:
Dim tbl As System.Data.DataTable
For Each tbl In AllOrders1.Tables
Console.WriteLine(tbl.TableName)
Next
Dim rel As System.Data.DataRelation
For Each rel In AllOrders1.Relations
Console.WriteLine(rel.RelationName)
Next
The DataTable object’s most important property is the Rows property, which is a collection of
DataRow objects. The DataRow object, in turn, exposes the Item property, which is the value of a
specific column (field) in a row. If the DSCustomersDataSet contains the Customers table, the fol-
lowing statement returns the CustomerID field of the third row in the Customers table:
DSCustomers.Tables(“Customers”).Rows(2).Item(“CustomerID”)
There’s a simpler expression for retrieving the same value, which is the following:
DSCustomers.Customers(2).CustomerID
Obviously, the second expression is easier to write and makes your code easier to read and main-
tain. However, this notation applies only to a typedDataSet—one with a schema available at design
time. The DataSet is based on existing tables, so that their structures are known at design time and
the compiler can create typed DataSets. If you create a DataSet at runtime from within your code,
then the compiler has no way of knowing the structure of the DataSet and therefore can’t create a
typed DataSet. This chapter deals with typed datasets only.
If you’re wondering how the compiler knows about the structure of the DataSet and how it can
expose the names of the tables as members of the DataSet object, or the names of the columns as
members of the DataTable object, the answer is quite simple. It creates a class for every DataSet and
for every table you add to the DataSet. This is done on the fly, and all the information is hidden
from you. To view the class that implements the DataSet, click the Show All Files button on the
Solution Explorer. Under the XDS file with the DataSet’s schema, there’s another file with the same
name and extension VB. If you open this for a DataSet that contains the Customers table, you will
965
THE STRUCTURE OF A DATASET
Copyright ©2002 SYBEX, Inc., Alameda, CA
www.sybex.com
Documents you may be interested
Documents you may be interested