c# render pdf : How to reorder pdf pages control software platform web page windows html web browser vb_dot_net_developers_guide46-part600

428
Chapter 9 • Using ADO.NET
From MyTable statements, and instead, retrieve only the columns we are actually
using. In addition, make sure to use well thought-out Where clauses to limit the
number of rows being returned. If all you need are names beginning with “A,”
then don’t select “A–Z.” Most of this is common sense; however, when you are
battling a particular piece of functionality, it easy to let the rules slip. Just be aware
that we are bringing that entire set of data through our connection.
Using DataSet
A DataSet holds a copy of all the data we request. It may contain more than one
table, and we can set up relationships within the DataSet that may not be present
in the database. For example, we can fill the DataSet with Orders and
OrderDetails tables.We can then create a relationship between them and step
through each OrderDetail in each order.
DataSets are populated from a DataReader implicitly.ADO.NET creates a
DataReader and populates the dataset for us.We don’t see this happening; we just
call the Fill method and let ADO.NET do the work for us.The DataSet will
temporarily hold data until we pass it along in the form of a DataTable or
DataView. In addition to holding our data, the DataSet offers some features that
were reserved for relational databases in the past; for example, primary keys, rela-
tionships, and constraints, to name a few. If you have worked with relational
databases, these terms should sound familiar, and their implementations in
ADO.NET are true to their database counterparts.
Relational Schema
With the DataRelation object, we have some new functionality that we never
had before. A DataRelation object allows us to specify simple join criteria
between DataTables in our Tables collection.This allows us to simplify code
operations for situations that call for a hierarchy, or otherwise shaped data. Shaped
data is one of the primary reasons why XML is so useful in our data operations.
XML lends itself to building data in a parent-child relationship, instead of a flat
file format. If you have been working with databases for any length of time, you
can see the similarities.A parent-child relationship is typically thought of as a
one-to-many relationship. One table contains the parent, or header records such
as the order date, customer information, OrderID, and so forth, and the other can
contain the line items for the order. In this scenario, we can have one order with
many items.There are entire books written about the theories behind these con-
cepts; for our purposes, we will restrict ourselves to a simple one-to-many
parent-child relationship. In the past, to get Orders and OrderDetail records in
www.syngress.com
How to reorder pdf pages - re-order PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Customizing Page Order of PDF Document in C# Project
reorder pages in pdf online; reordering pages in pdf document
How to reorder pdf pages - VB.NET PDF Page Move Library: re-order PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Sort PDF Document Pages Using VB.NET Demo Code
reorder pdf pages online; how to move pages around in a pdf document
Using ADO.NET • Chapter 9
429
one set of data, for every row in the OrderDetails record, we had all the Order
record information as well.This required some ugly code to get the parent-child
relationship in front of the end user.
To set up a DataRelation, we need two DataTable objects in our DataSet: a
Primary key and a Foreign key.These will establish our Parent objects and our
Child objects. For example:
Dim myds As DataSet = New DataSet("Orders")
Dim MyCol() As DataColumn
Add a Primary key to the DataTable to define the parent in the relationship:
MyCol(0) = myds.Tables("Orders").Columns("OrderID")
myds.Tables("Orders").PrimaryKey = MyCol
Add the relation using the Primary key we just created. Note: Do not use the
Primary key of the Child object; this will essentially restrict us to one item per
order and break our business rule:
myds.Relations.Add("Orders",
myds.Tables("Orders").Columns("OrderID"), _
myds.Tables("OrderDetail").Columns("OrderID"))
We can also place constraints on a DataTable object to give us even more
relational power.A ForeignKeyConstraint object requires a matching record in
the Parent DataTable. For example, we could not add a OrderDetail record
without first have a matching Order record. For example:
Private myDataSet As DataSet 
Private Sub CreateConstraint()
Declare parent column and child column variables:
Dim dColOrder As DataColumn
Dim dColOrderDet As DataColumn
Dim myFK As ForeignKeyConstraint
Set parent and child column variables:
dColOrder = MyDataSet.Tables("Orders").Columns("OrderID")
dColOrderDet = 
MyDataSet.Tables("OrderDetails").Columns("OrderID")
myFK = New ForeignKeyConstraint("OrderFK", dColOrder, dColOrderDet)
www.syngress.com
C# TIFF: How to Reorder, Rearrange & Sort TIFF Pages Using C# Code
Reorder, Rearrange and Sort TIFF Document Pages in C#.NET Application. C# TIFF Page Sorting Overview. Reorder TIFF Pages in C#.NET Application.
how to rearrange pages in a pdf reader; rearrange pdf pages online
C# PDF: C# Code to Process PDF Document Page Using C#.NET PDF
just following attached links. C# PDF: Add, Delete, Reorder PDF Pages Using C#.NET, C# PDF: Merge or Split PDF Files Using C#.NET.
how to rearrange pdf pages in preview; how to move pages in pdf files
430
Chapter 9 • Using ADO.NET
Set rules to indicate what action is to be performed when a Foreign key is
enforced:
myFK.DeleteRule = Rule.Cascade
myFK.UpdateRule = Rule.Cascade
In this instance, if we were to delete the parent record, the DeleteRule would
cascade the delete to the OrderDetails table and delete the child records as well.
With the UpdateRule, if the Primary key is updated, the Foreign key is updated
as well.This ensures that our records stay related, even if we change the Primary
key value. Changing Primary keys is taboo in database design, but this allows us
to break the rules occasionally.
The AcceptRejectRule.Cascade rule will cascade the changes at the data
source during the AcceptChanges method of the DataSet object. It is important to
realize that we have created the relationship outside of the database.The database
need not have these relationships defined:
myFK.AcceptRejectRule = AcceptRejectRule.Cascade
Add the constraint to the parent and set EnforceConstraints to true.This is
the final step to set up the relationships in our DataSet object:
myDataSet.Tables("Orders").Constraints.Add myFKC
myDataSet.EnforceConstraints = True
End Sub
Collection of Tables
A DataSet contains a collection of tables.These tables are tabbed representations
of our data and are the key to the DataSet’s versatility. Essentially identical to the
tables in our database, or other data source, they are added to our DataSet in the
same way we add objects to other collections. Once in our DataSet, we can
define properties such as the DataRelations, Primary keys, and so forth.
DataTables can be created programmatically, or retrieved from a database through
a SqlDataAdapter/OleDbDataAdapter object using the Fill method.
After we populate our DataSet with DataTable objects, we can access these
tables using an index or the name we gave the table when we added it to the
DataSet.The collection uses a zero-based index, so the first DataTable is at index 0:
ds.Tables(0)
www.syngress.com
VB.NET PowerPoint: Sort and Reorder PowerPoint Slides by Using VB.
Sort and Reorder PowerPoint Slides Range with VB amount of robust PPT slides/pages editing methods powerful & profession imaging controls, PDF document, image
rearrange pdf pages in preview; change page order pdf reader
VB.NET PDF: Create PDF Document Viewer in C#.NET for Document
Support navigating to the previous or next page of the PDF document; Able to insert, delete or reorder PDF document page in VB.NET document viewer;
pdf move pages; how to move pages in pdf reader
Using ADO.NET • Chapter 9
431
The preceding code is more efficient, but harder to read; the following code
is easier to read, but a little less efficient. How inefficient is yet to be determined,
but, generally speaking, your users won’t be able to tell.Therefore, unless you
have a compelling reason to use the index, the following code will be easier to
maintain:
ds.Tables("Orders")
The Tables collection is the basis for DataSet operations. From the collection
we can pull tables into separate DataTable variables and DataView objects, we can
bind them to DataGrids and DataLists, or act on them in the collection as in the
previous examples.
Data States
Data has many states.When we change data,ADO.NET performs some amazing
trickery on our behalf.ADO.NET maintains the various states, and versions of
our data as we manipulate it.This allows us to perform all sorts of validation
based on previous values since the last AcceptChanges call.As data is added,
updated, or deleted in our application, we can access the versions of the data, dis-
play it to the user, and give them some pretty powerful undo functionality. It is
important to note that this is available until we accept the changes and send them
back to the data source.
A table is comprised of DataRow objects.The DataRow objects allow access
to the entire row of data, but we also have versioning capability built into the
row.The DataRow maintains the versions of data listed in Table 9.3.
Table 9.3
Possible DataRowVersion Values for a DataRow Object
Member 
Name
Description
Default 
Default values for a row that was added.
Original 
Values in the DataTable when the DataTable was added to the 
DataSet.
Proposed 
Data that has been added or updated, but not committed.
Current 
Current data in the row as of the last time the row was 
committed.
For example, suppose our business rule will not allow us to save a change to a
record if the OrderAmount has not been updated.We first check to see if the
www.syngress.com
C# PDF Page Rotate Library: rotate PDF page permanently in C#.net
page, it is also featured with the functions to merge PDF files using C# .NET, add new PDF page, delete certain PDF page, reorder existing PDF pages and split
move pages in pdf document; reorder pages in a pdf
VB.NET TIFF: Modify TIFF File by Adding, Deleting & Sort TIFF
Users can use it to reorder TIFF pages in ''' &ltsummary> ''' Sort TIFF document pages in designed powerful & profession imaging controls, PDF document, image
how to change page order in pdf document; change pdf page order
432
Chapter 9 • Using ADO.NET
row has a version; if it does, we compare the proposed value and the current one.
If they match, the OrderAmount was not changed, and we reject the changes:
If MyRow.HasVersion(DataRowVersion.Proposed) Then
If MyRow("OrderAmount"), DataRowVersion.Proposed) = _
MyRow("OrderAmount"), DataRowVersion.Current) Then
Ds.RejectChanges()
End IF
End IF
In addition to row versions, we also have a RowState property that can give
us more information about the condition of a row.Table 9.4 lists the possible
states a row can be in.
Table 9.4
Possible RowState Values for a DataRow Object
Member 
Name
Description
Unchanged
No changes since last AcceptChanges call.
New
The row was added to the table, but AcceptChanges has not 
been called.
Modified
A change has been made, but AcceptChanges has not been 
called.
Deleted
The Delete method was used to delete the row from the table.
Detached
The row has either been deleted, but AcceptChanges has not 
been called, or the row has been created, but not added to the 
table.
With this type of versioning and state information we can really leverage
ADO.NET to enforce some pretty bizarre and wonderful business rules.This is
especially true where you are sending and receiving DataSets through a Web ser-
vice, or remoting to and from dissimilar systems.
Populating with the DataSet Command
The DataAdapter object allows us to populate DataTables in a DataSet.We call
the Fill method after constructing the object. Pass in the DataSet, and a name for
our DataTable object, and ADO.NET takes care of the rest. For example, to use
an OleDbDataAdapter to populate a DataTable:
www.syngress.com
VB.NET PDF: VB.NET Guide to Process PDF Document in .NET Project
It can be used to add or delete PDF document page(s), sort the order of PDF pages, add image to PDF document page and extract page(s) from PDF document in VB
reorder pdf pages reader; reorder pdf pages in preview
.NET Multipage TIFF SDK| Process Multipage TIFF Files
SDK, developers are easily to access, extract, swap, reorder, insert, mark up and delete pages in any multi upload to SharePoint and save to PDF documents.
how to reorder pdf pages; reordering pdf pages
Using ADO.NET • Chapter 9
433
Dim myDS As DataSet = New DataSet("myDataSet")
Dim myAdapter As OleDbDataAdapter = New OleDbDataAdapter( _ 
"SELECT * FROM Orders", sConn)
myAdapter.Fill(myDS, "Orders")
That is pretty easy.To use the SQL data provider, you just have to substitute
SqlDataAdapter for OleDbDataAdapter.The Fill method is constructed the same
way, but results in tighter integration with SQL Server and allows for better per-
formance.
Populating with XML
We can populate a DataSet directly from a well-formed XML file. By well formed,
I mean an XML file that adheres to W3C guidelines for properly formatted
XML tags. Using the ReadXML method of a DataSet object, we can populate a
DataSet with XML.This allows us to access and manipulate XML data as easily as
we manipulate any other type of data. Once we are finished manipulating it, we
can use the WriteXML method to save back to the original file, or create a new
file.A simple example to read a file in, manipulate some data, and write a file out
looks like this:
dsXML = New DataSet()
dsXML.ReadXml("Orders.xml")
DataGrid1.DataSource = dsXML
All we did was write a few lines of code, and the DataSet took care of
parsing the XML file, generating the DataTable and DataColumn objects, and
then importing the data from the XML file.When we run our project we see the
contents of the XML file in our data grid.To write the file out, we use the fol-
lowing syntax:
dsXML.WriteXML("Orders.xml")
Notice that in both examples, I am not specifying a path to these files. Our
application expects to find them in the same folder in which the executable
resides.An easy way to create an XML file for the example is to connect to a
database, populate a DataSet, and use the WriteXML method to extract the data
into an XML file.This is also useful if you need to quickly generate an XML file
to transmit data to a distant location, or for archival purposes.ADO.NET—
specifically, the DataSet—allows us to quickly and easily work with XML data,
from the data aspect.We can make changes to the schema of the XML by
www.syngress.com
434
Chapter 9 • Using ADO.NET
making changes to the DataColumn and DataTable objects in our newly created
DataSet.These changes will be reflected when we write the data out.
It may not be obvious here, but by using the ReadXML method, we are not
connecting to the XML file as we would a database; we are importing the data.
This effectively means that we are copying the data, so if you need to persist your
changes, you also need to write out the XML file when you are finished with
the data.
Populating Programmatically
We can create a DataTable object and populate it manually.That is, we can con-
struct an empty DataTable, and then, using the DataTable methods to add
columns and rows, we can create and populate a DataTable without having to
connect to a database. For example, I want to create a table to hold connection
strings, but it will be a local file that my application uses.The application will
load this file on startup, and I can cycle through the connections to find an avail-
able database server—sort of like a poor man’s failover. Here is a portion of that
code; refer to the chapter samples for a more entertaining example.
Create an empty DataTable:
Dim myTbl As New DataTable("tblConn")
Dim myDS As New DataSet("ConnString")
Create the columns to hold our connection information:
Dim colProvider As New DataColumn("Provider")
Create the DataRow:
Dim rowConn As DataRow
Add the new table to the DataSet:
myDS.Tables.Add(mTbl)
Now, add the columns to the DataTable:
colProvider.DataType = System.Type.GetType("System.String")
myDS.Tables("tblConn").Columns.Add(colProvider)
First, create the row:
rowConn = mDS.Tables("tblConn").NewRow
www.syngress.com
Using ADO.NET • Chapter 9
435
Second, add the new row into the DataTable:
myDS.Tables("tblConn").Rows.Add(rowConn)
Populate the columns with data:
rowConn("Provider") = "SQLOLEDB.1"
From here on we can use the DataTable just as if it were created from a
multi-terabyte server. Get the idea behind the portability of our code? Same
code, just change the source and we open up new avenues for our application to
expand into.
Using the SQL Server Data Provider
The SQL Server data provider is written explicitly to provide data access to
Microsoft SQL Server version 7 and later.This set of classes takes advantage of
the SQL Server API in a way that makes it more efficient for data access than
going through the OLE DB libraries.Think of it as native access to Microsoft
SQL Server for ADO.NET.
Some of the ADO.NET objects are a little different for the SQL libraries.
They implement the same interfaces; the only difference is really the name as far
as we are concerned. Of course, the underlying implementation is different as well.
The SQL Server data provider’s core objects are SqlConnection,
SqlDataAdapter, SqlCommand, and SqlDataReader.There are other objects and
events, but these are the main ones we will focus on day to day.The examples in
the chapter can be executed against these objects by changing the namespace
from System.Data.OleDb to System.Data.SqlClient.Then, change the object
types from OleDbxx to Sqlxx. For example:
Dim myDS As DataSet = New DataSet("myDataSet")
Dim myAdapter As OleDbDataAdapter = New OleDbDataAdapter( _ 
"SELECT * FROM Orders", sConn)
myAdapter.Fill(myDS, "Orders")
becomes:
Dim myDS As DataSet = New DataSet("myDataSet")
Dim myAdapter As SqlDataAdapter = New SqlDataAdapter( _ 
"SELECT * FROM Orders", sConn)
myAdapter.Fill(myDS, "Orders")
www.syngress.com
436
Chapter 9 • Using ADO.NET
This makes it easy to change from, say, Oracle to SQL Server, at least from
this standpoint.The devil is in the details, so take this type of project cautiously.
Switching an RDBMS is not trivial, but ADO.NET goes a long way to making
life easier for the VB.NET programmer. However, we still have to work out the
structural differences in the databases, for instance.
If, on the other hand, the RDBMS your project is to reside on is not chosen,
you could safely use the OLE DB or ODBC provider and continue developing.
You won’t get the tight integration to any database product, but that is not always
the most important aspect of a project. Many times, the driving force behind a
project is time to market, and it may not be wise to let deadlines slip waiting on
the often-political process of choosing a relational database.Think of the OLE
DB managed provider as the great RDBMS equalizer, at least from the data
access point of view.
N
OTE
While generating SQL command text, use the FormatDateTime method
to convert DataTime information into localized strings. This will return a
string that will work with SQL Server. SQL Server currently does not rec-
ognize the ISO 8601 date format and will throw an error:
'// Will result in "1999-05-16T12:40:30"
MyDate.ToString()
Imports Microsoft.VisualBasic
'// would result in "5/16/1999"
FormatDateTime(MyDate, DateFormat.ShortDate) 
TDS
TDS stands for TypedDataSet, also known as a Strongly TypedDataSet.A
TypedDataSet is bit of wizardry that the Visual Studio IDE does for us.What we
are talking about here is basically early binding to our tables and data columns.
They are created by using a class derived from the DataSet class and are com-
bined with a Schema Definition file to provide the impression of early binding.
What I mean by early binding is that the VB compiler will enforce the column
naming and datatyping during compile time. See CD file Chapter 09/
Chapter9 Beta2/Samples/XML/MyData.xsd.
www.syngress.com
Using ADO.NET • Chapter 9
437
Exercise 9.2 Using TypedDataSet
1. Open Visual Studio and create a new Windows Application.
2. From the Server Explorer, expand the Server tab | SQL Server
Databases | Databases | Northwind | Tables, and drag the Orders
Table onto the form. See Figure 9.4 for a view of the Server Explorer.
My Server name in this graphic is QDSDOTNET, so expect your
server name to appear here.
3. Visual Studio will create two Data objects, a SqlConnection object and a
SqlDataAdapter object.These do not show up on the form; instead, they
show up on the Component Tray in Visual Studio. Figure 9.5 shows an
example.
www.syngress.com
Figure 9.4
Server Explorer
Figure 9.5
Data Objects on the Component Tray
Documents you may be interested
Documents you may be interested