c# pdf diff : Bookmarks in pdf application SDK tool html wpf web page online air_htmldevguide22-part467

215
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
Working with local SQL databases in AIR
Last updated 9/28/2011
// using listener methods and addEventListener()  
selectData.addEventListener(air.SQLEvent.RESULT, resultHandler);  
selectData.addEventListener(air.SQLErrorEvent.ERROR, errorHandler);  
function resultHandler(event)  
{  
// do something after the statement execution succeeds  
}  
function errorHandler(event)  
{  
// do something after the statement execution fails  
}
Alternatively, you can specify listener methods using a Responder object. In that case you create the Responder 
instance and link the listener methods to it.
// using a Responder  
var selectResponder = new air.Responder(onResult, onError);  
function onResult(result)  
{  
// do something after the statement execution succeeds  
}  
function onError(error)  
{  
// do something after the statement execution fails  
}
If the statement text includes parameter definitions, assign values for those parameters.
To assign parameter values, use the SQLStatement instance’s 
parameters
associative array property.
selectData.parameters[":param1"] = 25;
Execute the SQL statement.
Call the SQLStatement instance’s 
execute()
method.
// using synchronous execution mode  
// or listener methods in asynchronous execution mode  
selectData.execute();
Additionally, if you’re using a Responder instead of event listeners in asynchronous execution mode, pass the 
Responder instance to the 
execute()
method.
// using a Responder in asynchronous execution mode  
selectData.execute(-1, selectResponder);
For specific examples that demonstrate these steps, see the following topics:
Retrieving data from a database” on page  218
Inserting data” on page  225
Changing or deleting data” on page  228
Bookmarks in pdf - add, remove, update PDF bookmarks in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Your C# Project with Rapid PDF Internal Navigation Via Bookmark and Outline
pdf bookmark; how to bookmark a pdf file
Bookmarks in pdf - VB.NET PDF bookmark library: add, remove, update PDF bookmarks in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Your VB.NET Project with Rapid PDF Internal Navigation Via Bookmark and Outline
how to bookmark a page in pdf document; add bookmarks to pdf reader
216
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
Working with local SQL databases in AIR
Last updated 9/28/2011
Using parameters in statements
Adobe AIR 1.0 and later
Using SQL statement parameters allows you to create a reusable SQL statement. When you use statement parameters, 
values within the statement can change (such as values being added in an 
INSERT
statement) but the basic statement 
text remains unchanged. Consequently, using parameters provides performance benefits and makes it easier to code 
an application.
Understanding statement parameters
Adobe AIR 1.0 and later
Frequently an application uses a single SQL statement multiple times in an application, with slight variation. For 
example, consider an inventory-tracking application where a user can add new inventory items to the database. The 
application code that adds an inventory item to the database executes a SQL 
INSERT
statement that actually adds the 
data to the database. However, each time the statement is executed there is a slight variation. Specifically, the actual 
values that are inserted in the table are different because they are specific to the inventory item being added.
In cases where you have a SQL statement that’s used multiple times with different values in the statement, the best 
approach is to use a SQL statement that includes parameters rather than literal values in the SQL text. A parameter is 
a placeholder in the statement text that is replaced with an actual value each time the statement is executed. To use 
parameters in a SQL statement, you create the SQLStatement instance as usual. For the actual SQL statement assigned 
to the 
text
property, use parameter placeholders rather than literal values. You then define the value for each 
parameter by setting the value of an element in the SQLStatement instance’s 
parameters
property. The 
parameters
property is an associative array, so you set a particular value using the following syntax:
statement.parameters[parameter_identifier] = value;
The parameter_identifier is a string if you’re using a named parameter, or an integer index if you’re using an unnamed 
parameter.
Using named parameters
Adobe AIR 1.0 and later
A parameter can be a named parameter. A named parameter has a specific name that the database uses to match the 
parameter value to its placeholder location in the statement text. A parameter name consists of the “:” or “@” character 
followed by a name, as in the following examples:
:itemName  
@firstName
The following code listing demonstrates the use of named parameters:
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
document file. Remove bookmarks, annotations, watermark, page labels and article threads from PDF while compressing. Also a preview
copy pdf bookmarks; export pdf bookmarks to excel
C# PDF File Split Library: Split, seperate PDF into multiple files
Split PDF file by top level bookmarks. The following C# codes explain how to split a PDF file into multiple ones by PDF bookmarks or outlines.
create pdf bookmarks; add bookmark pdf file
217
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
Working with local SQL databases in AIR
Last updated 9/28/2011
var sql =   
"INSERT INTO inventoryItems (name, productCode)" +  
"VALUES (:name, :productCode)";  
var addItemStmt = new air.SQLStatement();  
addItemStmt.sqlConnection = conn;  
addItemStmt.text = sql;  
// set parameter values  
addItemStmt.parameters[":name"] = "Item name";  
addItemStmt.parameters[":productCode"] = "12345";  
addItemStmt.execute();
Using unnamed parameters
Adobe AIR 1.0 and later
As an alternative to using named parameters, you can also use unnamed parameters. To use an unnamed parameter 
you denote a parameter in a SQL statement using a “?” character. Each parameter is assigned a numeric index, 
according to the order of the parameters in the statement, starting with index 0 for the first parameter. The following 
example demonstrates a version of the previous example, using unnamed parameters:
var sql =   
"INSERT INTO inventoryItems (name, productCode)" +  
"VALUES (?, ?)";  
var addItemStmt = new air.SQLStatement();  
addItemStmt.sqlConnection = conn;  
addItemStmt.text = sql;  
// set parameter values  
addItemStmt.parameters[0] = "Item name";  
addItemStmt.parameters[1] = "12345";  
addItemStmt.execute();
Benefits of using parameters
Adobe AIR 1.0 and later
Using parameters in a SQL statement provides several benefits:
Better performance 
A SQLStatement instance that uses parameters can execute more efficiently compared to one that 
dynamically creates the SQL text each time it executes. The performance improvement is because the statement is 
prepared a single time and can then be executed multiple times using different parameter values, without needing to 
recompile the SQL statement.
Explicit data typing 
Parameters are used to allow for typed substitution of values that are unknown at the time the SQL 
statement is constructed. The use of parameters is the only way to guarantee the storage class for a value passed in to 
the database. When parameters are not used, the runtime attempts to convert all values from their text representation 
to a storage class based on the associated column's type affinity.
For more information on storage classes and column affinity, see “Data type support” on page  362.
Greater security 
The use of parameters helps prevent a malicious technique known as a SQL injection attack. In a SQL 
injection attack, a user enters SQL code in a user-accessible location (for example, a data entry field). If application 
VB.NET PDF File Split Library: Split, seperate PDF into multiple
Demo Code in VB.NET. The following VB.NET codes explain how to split a PDF file into multiple ones by PDF bookmarks or outlines.
pdf bookmarks; edit pdf bookmarks
C# PDF File Compress Library: Compress reduce PDF size in C#.net
NET framework. Remove bookmarks, annotations, watermark, page labels and article threads from PDF while compressing. C# class demo
adding bookmarks in pdf; creating bookmarks in pdf from word
218
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
Working with local SQL databases in AIR
Last updated 9/28/2011
code constructs a SQL statement by directly concatenating user input into the SQL text, the user-entered SQL code is 
executed against the database. The following listing shows an example of concatenating user input into SQL text. Do 
not use this technique:
// assume the variables "username" and "password"  
// contain user-entered data  
var sql =  
"SELECT userId " +  
"FROM users " +  
"WHERE username = '" + username + "' " +  
   AND password = '" + password + "'";  
var statement = new air.SQLStatement();  
statement.text = sql;
Using statement parameters instead of concatenating user-entered values into a statement's text prevents a SQL 
injection attack. SQL injection can’t happen because the parameter values are treated explicitly as substituted values, 
rather than becoming part of the literal statement text. The following is the recommended alternative to the previous 
listing:
// assume the variables "username" and "password"  
// contain user-entered data  
var sql =  
"SELECT userId " +  
"FROM users " +  
"WHERE username = :username " +  
   AND password = :password";  
var statement = new air.SQLStatement();  
statement.text = sql;  
// set parameter values  
statement.parameters[":username"] = username;  
statement.parameters[":password"] = password;
Retrieving data from a database
Adobe AIR 1.0 and later
Retrieving data from a database involves two steps. First, you execute a SQL 
SELECT
statement, describing the set of 
data you want from the database. Next, you access the retrieved data and display or manipulate it as needed by your 
application.
Executing a SELECT statement
Adobe AIR 1.0 and later
To retrieve existing data from a database, you use a SQLStatement instance. Assign the appropriate SQL 
SELECT
statement to the instance’s 
text
property, then call its 
execute()
method. 
For details on the syntax of the 
SELECT
statement, see “SQL support in local databases” on page  341.
The following example demonstrates executing a 
SELECT
statement to retrieve data from a table named “products,” 
using asynchronous execution mode:
.NET PDF SDK - Description of All PDF Processing Control Feastures
Fully featured PDF Viewer in HTML5; Outstanding rendering of PDF documents; Full page navigation, zooming & rotation; Outlines, bookmarks, & thumbnail display;
how to add a bookmark in pdf; excel hyperlink to pdf bookmark
XDoc.Word for .NET, Advanced .NET Word Processing Features
& rotation; Outlines, bookmarks, & thumbnail display; Integrated annotation; More about Web Viewer ▶. Conversion. Word Create. Create Word from PDF; Create Word
create bookmarks pdf; pdf create bookmarks
219
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
Working with local SQL databases in AIR
Last updated 9/28/2011
// Include AIRAliases.js to use air.* shortcuts  
var selectStmt = new air.SQLStatement();  
// A SQLConnection named "conn" has been created previously  
selectStmt.sqlConnection = conn;  
selectStmt.text = "SELECT itemId, itemName, price FROM products";  
selectStmt.addEventListener(air.SQLEvent.RESULT, resultHandler);  
selectStmt.addEventListener(air.SQLErrorEvent.ERROR, errorHandler);  
selectStmt.execute();  
function resultHandler(event)  
{  
var result = selectStmt.getResult();  
var numResults = result.data.length;  
for (i = 0; i < numResults; i++)  
 
var row = result.data[i];  
var output = "itemId: " + row.itemId;  
output += "; itemName: " + row.itemName;  
output += "; price: " + row.price;  
air.trace(output);  
 
}  
function errorHandler(event)  
{  
// Information about the error is available in the  
// event.error property, which is an instance of   
// the SQLError class.  
}
The following example demonstrates executing a 
SELECT
statement to retrieve data from a table named “products,” 
using synchronous execution mode:
XDoc.Excel for .NET, Comprehensive .NET Excel Imaging Features
zooming & rotation; Outlines, bookmarks, & thumbnail display; Integrated annotation; More about Web Viewer ▶. Excel Convert. Convert Excel to PDF; Convert Excel
add bookmarks to pdf online; bookmark pdf in preview
XDoc.PowerPoint for .NET, All Mature Features Introductions
& rotation; Outlines, bookmarks, & thumbnail display; Integrated annotation; More about Web Viewer ▶. PowerPoint Convert. Convert PowerPoint to PDF; Convert
creating bookmarks in pdf documents; export pdf bookmarks to text file
220
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
Working with local SQL databases in AIR
Last updated 9/28/2011
// Include AIRAliases.js to use air.* shortcuts  
var selectStmt = new air.SQLStatement();  
// A SQLConnection named "conn" has been created previously  
selectStmt.sqlConnection = conn;  
selectStmt.text = "SELECT itemId, itemName, price FROM products";  
try  
{  
selectStmt.execute();  
var result = selectStmt.getResult();  
var numResults = result.data.length;  
for (i = 0; i < numResults; i++)  
 
var row = result.data[i];  
var output = "itemId: " + row.itemId;  
output += "; itemName: " + row.itemName;  
output += "; price: " + row.price;  
air.trace(output);  
 
}  
catch (error)  
{  
// Information about the error is available in the  
// error variable, which is an instance of   
// the SQLError class.  
}
In asynchronous execution mode, when the statement finishes executing, the SQLStatement instance dispatches a 
result
event (
SQLEvent.RESULT
) indicating that the statement was run successfully. Alternatively, if a Responder 
object is passed as an argument to the 
execute()
method, the Responder object’s result handler function is called. In 
synchronous execution mode, execution pauses until the 
execute()
operation completes, then continues on the next 
line of code.
Accessing SELECT statement result data
Adobe AIR 1.0 and later
Once the 
SELECT
statement has finished executing, the next step is to access the data that was retrieved. You retrieve 
the result data from executing a 
SELECT
statement by calling the SQLStatement object’s 
getResult()
method:
var result = selectStatement.getResult();
The 
getResult()
method returns a SQLResult object. The SQLResult object’s 
data
property is an Array containing 
the results of the 
SELECT
statement:
var numResults = result.data.length;  
for (var i = 0; i < numResults; i++)  
{  
// row is an Object representing one row of result data  
var row = result.data[i];  
}
221
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
Working with local SQL databases in AIR
Last updated 9/28/2011
Each row of data in the 
SELECT
result set becomes an Object instance contained in the 
data
Array. That object has 
properties whose names match the result set’s column names. The properties contain the values from the result set’s 
columns. For example, suppose a 
SELECT
statement specifies a result set with three columns named “itemId,” 
“itemName,” and “price.” For each row in the result set, an Object instance is created with properties named 
itemId
itemName
, and 
price
. Those properties contain the values from their respective columns.
The following code listing defines a SQLStatement instance whose text is a 
SELECT
statement. The statement retrieves 
rows containing the 
firstName
and 
lastName
column values of all the rows of a table named 
employees
. This 
example uses asynchronous execution mode. When the execution completes, the 
selectResult()
method is called, 
and the resulting rows of data are accessed using 
SQLStatement.getResult()
and displayed using the 
trace()
method. Note that this listing assumes there is a SQLConnection instance named 
conn
that has already been 
instantiated and is already connected to the database. It also assumes that the “employees” table has already been 
created and populated with data.
// Include AIRAliases.js to use air.* shortcuts  
// ... create and open the SQLConnection instance named conn ...  
// create the SQL statement  
var selectStmt = new air.SQLStatement();  
selectStmt.sqlConnection = conn;  
// define the SQL text  
var sql =   
"SELECT firstName, lastName " +   
"FROM employees";  
selectStmt.text = sql;  
// register listeners for the result and error events  
selectStmt.addEventListener(air.SQLEvent.RESULT, selectResult);  
selectStmt.addEventListener(air.SQLErrorEvent.ERROR, selectError);  
// execute the statement  
selectStmt.execute();  
function selectResult(event)  
{  
222
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
Working with local SQL databases in AIR
Last updated 9/28/2011
// access the result data  
var result = selectStmt.getResult();  
var numRows = result.data.length;  
for (i = 0; i < numRows; i++)  
 
var output = "";  
for (columnName in result.data[i])  
{  
output += columnName + ": " + result.data[i][columnName] + "; ";  
}  
air.trace("row[" + i.toString() + "]\t", output);  
 
}  
function selectError(event)  
{  
air.trace("Error message:", event.error.message);  
air.trace("Details:", event.error.details);  
}
The following code listing demonstrates the same techniques as the preceding one, but uses synchronous execution 
mode. The example defines a SQLStatement instance whose text is a 
SELECT
statement. The statement retrieves rows 
containing the 
firstName
and 
lastName
column values of all the rows of a table named 
employees
. The resulting 
rows of data are accessed using 
SQLStatement.getResult()
and displayed using the 
trace()
method. Note that this 
listing assumes there is a SQLConnection instance named 
conn
that has already been instantiated and is already 
connected to the database. It also assumes that the “employees” table has already been created and populated with data.
223
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
Working with local SQL databases in AIR
Last updated 9/28/2011
// Include AIRAliases.js to use air.* shortcuts  
// ... create and open the SQLConnection instance named conn ...  
// create the SQL statement  
var selectStmt = new air.SQLStatement();  
selectStmt.sqlConnection = conn;  
// define the SQL text  
var sql =   
"SELECT firstName, lastName " +   
"FROM employees";  
selectStmt.text = sql;  
try  
{  
// execute the statement  
selectStmt.execute();  
// access the result data  
var result = selectStmt.getResult();  
var numRows = result.data.length;  
for (i = 0; i < numRows; i++)  
 
var output = "";  
for (columnName in result.data[i])  
{  
output += columnName + ": " + result.data[i][columnName] + "; ";  
}  
air.trace("row[" + i.toString() + "]\t", output);  
 
}  
catch (error)  
{  
air.trace("Error message:", error.message);  
air.trace("Details:", error.details);  
}
Defining the data type of SELECT result data
Adobe AIR 1.0 and later
By default, each row returned by a 
SELECT
statement is created as an Object instance with properties named for the 
result set's column names and with the value of each column as the value of its associated property. However, before 
executing a SQL 
SELECT
statement, you can set the 
itemClass
property of the SQLStatement instance to a class. By 
setting the 
itemClass
property, each row returned by the 
SELECT
statement is created as an instance of the designated 
class. The runtime assigns result column values to property values by matching the column names in the 
SELECT
result 
set to the names of the properties in the 
itemClass
class.
Any class assigned as an 
itemClass
property value must have a constructor that does not require any parameters. In 
addition, the class must have a single property for each column returned by the 
SELECT
statement. It is considered an 
error if a column in the 
SELECT
list does not have a matching property name in the 
itemClass
class.
224
HTML DEVELOPER’S GUIDE FOR ADOBE AIR
Working with local SQL databases in AIR
Last updated 9/28/2011
Retrieving SELECT results in parts
Adobe AIR 1.0 and later
By default, a 
SELECT
statement execution retrieves all the rows of the result set at one time. Once the statement 
completes, you usually process the retrieved data in some way, such as creating objects or displaying the data on the 
screen. If the statement returns a large number of rows, processing all the data at once can be demanding for the 
computer, which in turn will cause the user interface to not redraw itself.
You can improve the perceived performance of your application by instructing the runtime to return a specific number 
of result rows at a time. Doing so causes the initial result data to return more quickly. It also allows you to divide the 
result rows into sets, so that the user interface is updated after each set of rows is processed. Note that it’s only practical 
to use this technique in asynchronous execution mode.
To retrieve 
SELECT
results in parts, specify a value for the 
SQLStatement.execute()
method’s first parameter (the 
prefetch
parameter). The 
prefetch
parameter indicates the number of rows to retrieve the first time the statement 
executes. When you call a SQLStatement instance’s 
execute()
method, specify a 
prefetch
parameter value and only 
that many rows are retrieved:
// Include AIRAliases.js to use air.* shortcuts  
var stmt = new air.SQLStatement();  
stmt.sqlConnection = conn;  
stmt.text = "SELECT ...";  
stmt.addEventListener(air.SQLEvent.RESULT, selectResult);  
stmt.execute(20); // only the first 20 rows (or fewer) are returned
The statement dispatches the 
result
event, indicating that the first set of result rows is available. The resulting 
SQLResult instance’s 
data
property contains the rows of data, and its 
complete
property indicates whether there are 
additional result rows to retrieve. To retrieve additional result rows, call the SQLStatement instance’s 
next()
method. 
Like the 
execute()
method, the 
next()
method’s first parameter is used to indicate how many rows to retrieve the 
next time the result event is dispatched. 
function selectResult(event)  
{  
var result = stmt.getResult();  
if (result.data != null)  
 
// ... loop through the rows or perform other processing ...  
if (!result.complete)  
{  
stmt.next(20); // retrieve the next 20 rows  
}  
else  
{  
stmt.removeEventListener(air.SQLEvent.RESULT, selectResult);  
}  
 
}
The SQLStatement dispatches a 
result
event each time the 
next()
method returns a subsequent set of result rows. 
Consequently, the same listener function can be used to continue processing results (from 
next()
calls) until all the 
rows are retrieved.
Documents you may be interested
Documents you may be interested