pdf viewer in asp net c# : Add an image to a pdf with acrobat application SDK cloud windows wpf .net class postgresql-9.4-A481-part3007

Chapter 33. ECPG - Embedded SQL in C
• dbname
[@
hostname
][:
port
]
tcp:postgresql://
hostname
[:
port
][/
dbname
][?
options
]
unix:postgresql://
hostname
[:
port
][/
dbname
][?
options
]
an SQL string literal containing one of the above forms
areference to a character variable containing one of the above forms (see examples)
DEFAULT
If you specify the connection target literally (that is, not through a variable reference) and you don’t
quote the value, then the case-insensitivityrules of normal SQL are applied. In that case you can also
double-quote the individual parameters separately as needed. In practice, it is probably less error-
prone to use a (single-quoted) string literal or a variable reference. The connection target
DEFAULT
initiates a connection to the default database under the default user name. No separate user name or
connection name can be specified in that case.
There are also different ways to specify the user name:
• username
• username
/
password
• username
IDENTIFIED BY
password
• username
USING
password
As above, the parameters
username
and
password
can be an SQL identifier, an SQL string literal,
or a reference to a character variable.
The
connection-name
is used to handle multiple connections in one program. It can be omitted
if a program uses only one connection. The most recently opened connection becomes the current
connection, which is used by default when an SQL statement is to be executed (see later in this
chapter).
Here are some examples of
CONNECT
statements:
EXEC SQL CONNECT TO mydb@sql.mydomain.com;
EXEC SQL CONNECT TO unix:postgresql://sql.mydomain.com/mydb AS myconnection USER john;
EXEC SQL BEGIN DECLARE SECTION;
const char
*
target = "mydb@sql.mydomain.com";
const char
*
user = "john";
const char
*
passwd = "secret";
EXEC SQL END DECLARE SECTION;
...
EXEC SQL CONNECT TO :target USER :user USING :passwd;
/
*
or EXEC SQL CONNECT TO :target USER :user/:passwd;
*
/
The last form makes use of the variant referred to above as character variable reference. You will see
in later sections how C variables can be used in SQL statements when you prefix them with a colon.
Be advised that the format of the connection target is not specified in the SQL standard. So if you
want to develop portable applications, you might want to use something based on the last example
above to encapsulate the connection target string somewhere.
738
Add an image to a pdf with acrobat - insert images into PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Sample C# code to add image, picture, logo or digital photo into PDF document page using PDF page editor control
add picture to pdf document; add picture to pdf form
Add an image to a pdf with acrobat - VB.NET PDF insert image library: insert images into PDF in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Guide VB.NET Programmers How to Add Images in PDF Document
add photo to pdf file; add picture to pdf
Chapter 33. ECPG - Embedded SQL in C
33.2.2. Choosing a Connection
SQL statements in embedded SQL programs are by default executed on the current connection, that
is, the most recently opened one. If an application needs to manage multiple connections, then there
are two ways to handle this.
The first option is toexplicitly choose a connection for each SQL statement, for example:
EXEC SQL AT
connection-name
SELECT ...;
This option is particularly suitable if the application needs to use several connections in mixed order.
If your application uses multiple threads of execution, they cannot share a connection concurrently.
You must either explicitly control access to the connection (using mutexes) or use a connection for
each thread. If each thread uses its own connection, you will need to use the AT clause to specify
which connection the thread will use.
The second option is to execute a statement to switch the current connection. That statement is:
EXEC SQL SET CONNECTION
connection-name
;
This option is particularly convenient if many statements are to be executed on the same connection.
It is not thread-aware.
Here is an example program managing multiple database connections:
#include <stdio.h>
EXEC SQL BEGIN DECLARE SECTION;
char dbname[1024];
EXEC SQL END DECLARE SECTION;
int
main()
{
EXEC SQL CONNECT TO testdb1 AS con1 USER testuser;
EXEC SQL CONNECT TO testdb2 AS con2 USER testuser;
EXEC SQL CONNECT TO testdb3 AS con3 USER testuser;
/
*
This query would be executed in the last opened database "testdb3".
*
/
EXEC SQL SELECT current_database() INTO :dbname;
printf("current=%s (should be testdb3)\n", dbname);
/
*
Using "AT" to run a query in "testdb2"
*
/
EXEC SQL AT con2 SELECT current_database() INTO :dbname;
printf("current=%s (should be testdb2)\n", dbname);
/
*
Switch the current connection to "testdb1".
*
/
EXEC SQL SET CONNECTION con1;
EXEC SQL SELECT current_database() INTO :dbname;
printf("current=%s (should be testdb1)\n", dbname);
EXEC SQL DISCONNECT ALL;
return 0;
}
This example would produce this output:
739
.NET PDF Document Viewing, Annotation, Conversion & Processing
Convert image files to PDF. File & Page Process. Annotate & Comment. Add, insert PDF native annotations to PDF file. Support for all the print modes in Acrobat PDF
add image to pdf reader; add photo to pdf reader
C# PDF Converter Library SDK to convert PDF to other file formats
without using other external third-party dependencies like Adobe Acrobat. you can easily perform file conversion from PDF document to image or document
add picture to pdf preview; add jpg to pdf acrobat
Chapter 33. ECPG - Embedded SQL in C
current=testdb3 (should be testdb3)
current=testdb2 (should be testdb2)
current=testdb1 (should be testdb1)
33.2.3. Closing a Connection
To close a connection, use the following statement:
EXEC SQL DISCONNECT [
connection
];
The
connection
can be specified in the following ways:
• connection-name
DEFAULT
CURRENT
ALL
If no connection name is specified, the current connection is closed.
It is good style that an application always explicitly disconnect from every connection it opened.
33.3. Running SQL Commands
Any SQL commandcan be run from withinan embeddedSQL application. Below are some examples
of how to do that.
33.3.1. Executing SQL Statements
Creatinga table:
EXEC SQL CREATE TABLE foo (number integer, ascii char(16));
EXEC SQL CREATE UNIQUE INDEX num1 ON foo(number);
EXEC SQL COMMIT;
Inserting rows:
EXEC SQL INSERT INTO foo (number, ascii) VALUES (9999, ’doodad’);
EXEC SQL COMMIT;
Deletingrows:
EXEC SQL DELETE FROM foo WHERE number = 9999;
EXEC SQL COMMIT;
740
C# Windows Viewer - Image and Document Conversion & Rendering in
without using other external third-party dependencies like Adobe Acrobat. Image and Document Conversion Supported by Windows Viewer. Convert to PDF.
add image to pdf; how to add a jpeg to a pdf file
VB.NET PDF: How to Create Watermark on PDF Document within
Using this VB.NET Imaging PDF Watermark Add-on, you can a watermark that consists of text or image (such as And with our PDF Watermark Creator, users need no
how to add an image to a pdf in preview; add jpg to pdf online
Chapter 33. ECPG - Embedded SQL in C
Updates:
EXEC SQL UPDATE foo
SET ascii = ’foobar’
WHERE number = 9999;
EXEC SQL COMMIT;
SELECT
statements that return a single result row can also be executed using
EXEC SQL
directly. To
handle resultsets with multiple rows, anapplicationhas touse a cursor;seeSection33.3.2below. (As
aspecial case, an application can fetch multiple rows at once into an array host variable; see Section
33.4.4.3.1.)
Single-rowselect:
EXEC SQL SELECT foo INTO :FooBar FROM table1 WHERE ascii = ’doodad’;
Also, a configuration parameter can be retrieved with the
SHOW
command:
EXEC SQL SHOW search_path INTO :var;
The tokens of the form
:
something
are host variables, that is, theyrefer tovariables intheC program.
They are explained in Section 33.4.
33.3.2. Using Cursors
To retrieve a result set holding multiple rows, an application has to declare a cursor and fetch each
row from the cursor. The steps to use a cursor are the following: declare a cursor, open it, fetch a row
from the cursor, repeat, and finally close it.
Select using cursors:
EXEC SQL DECLARE foo_bar CURSOR FOR
SELECT number, ascii FROM foo
ORDER BY ascii;
EXEC SQL OPEN foo_bar;
EXEC SQL FETCH foo_bar INTO :FooBar, DooDad;
...
EXEC SQL CLOSE foo_bar;
EXEC SQL COMMIT;
For moredetails about declaration of thecursor, see DECLARE, and seeFETCHfor
FETCH
command
details.
Note: The ECPG
DECLARE
command does not actually cause a statement to be sent to the Post-
greSQL backend. The cursor is opened in the backend (using the backend’s
DECLARE
command)
at the point when the
OPEN
command is executed.
741
C# powerpoint - PowerPoint Conversion & Rendering in C#.NET
using other external third-party dependencies like Adobe Acrobat. SDK to convert PowerPoint document to PDF document code for PowerPoint to TIFF image conversion
add an image to a pdf acrobat; adding image to pdf in preview
C# Word - Word Conversion in C#.NET
using other external third-party dependencies like Adobe Acrobat. Word SDK to convert Word document to PDF document. demo code for Word to TIFF image conversion
add image in pdf using java; how to add picture to pdf
Chapter 33. ECPG - Embedded SQL in C
33.3.3. Managing Transactions
In the default mode, statements are committed only when
EXEC SQL COMMIT
is issued. The em-
bedded SQL interface also supports autocommit of transactions (similar to libpq behavior) via the
-t
command-line option to
ecpg
(see ecpg) or via the
EXEC SQL SET AUTOCOMMIT TO ON
state-
ment. In autocommit mode, each command is automatically committed unless it is inside an explicit
transaction block. This mode can be explicitly turned off using
EXEC SQL SET AUTOCOMMIT TO
OFF
.
The following transaction management commands are available:
EXEC SQL COMMIT
Commit an in-progress transaction.
EXEC SQL ROLLBACK
Roll back an in-progress transaction.
EXEC SQL SET AUTOCOMMIT TO ON
Enable autocommit mode.
SET AUTOCOMMIT TO OFF
Disable autocommit mode. This is the default.
33.3.4. Prepared Statements
When the values to be passed to an SQL statement are not known at compile time, or the same
statement is going to be used many times, then prepared statements can be useful.
The statement is prepared using the command
PREPARE
.For the values that are not known yet, use
the placeholder “
?
”:
EXEC SQL PREPARE stmt1 FROM "SELECT oid, datname FROM pg_database WHERE oid = ?";
If a statement returns a single row, the application can call
EXECUTE
after
PREPARE
to execute the
statement, supplying the actual values for the placeholders with a
USING
clause:
EXEC SQL EXECUTE stmt1 INTO :dboid, :dbname USING 1;
If a statement returns multiple rows, the application can use a cursor declared based on the prepared
statement. To bind input parameters, the cursor must be opened with a
USING
clause:
EXEC SQL PREPARE stmt1 FROM "SELECT oid,datname FROM pg_database WHERE oid > ?";
EXEC SQL DECLARE foo_bar CURSOR FOR stmt1;
/
*
when end of result set reached, break out of while loop
*
/
EXEC SQL WHENEVER NOT FOUND DO BREAK;
EXEC SQL OPEN foo_bar USING 100;
...
while (1)
{
742
BMP to PDF Converter | Convert Bitmap to PDF, Convert PDF to BMP
Also designed to be used add-on for .NET Image SDK, RasterEdge Bitmap to PDF Converter can Powerful image converter for Bitmap and PDF files; No need for
add jpg to pdf document; add signature image to pdf acrobat
PDF to WORD Converter | Convert PDF to Word, Convert Word to PDF
out transformation between different kinds of image files and Word Converter has accurate output, and PDF to Word need the support of Adobe Acrobat & Microsoft
add image to pdf form; add an image to a pdf
Chapter 33. ECPG - Embedded SQL in C
EXEC SQL FETCH NEXT FROM foo_bar INTO :dboid, :dbname;
...
}
EXEC SQL CLOSE foo_bar;
When you don’t need the prepared statement anymore, you should deallocate it:
EXEC SQL DEALLOCATE PREPARE
name
;
For more details about
PREPARE
,see PREPARE. Also see Section 33.5 for more details about using
placeholders and input parameters.
33.4. Using Host Variables
In Section 33.3 you saw how you can execute SQL statements from an embedded SQL program.
Some of those statements only used fixed values and did not provide a way to insert user-supplied
values into statements or have the program process the values returned by the query. Those kinds of
statements are not really useful in real applications. This section explains in detail how you can pass
data between your C program and the embedded SQL statements using a simple mechanism called
host variables. In an embedded SQL program we consider the SQL statements to be guests in the C
program code which is the host language. Therefore the variables of the C program are called host
variables.
Another way to exchange values between PostgreSQL backends and ECPG applications is the use of
SQL descriptors, described in Section 33.7.
33.4.1. Overview
Passing data between the C program and the SQL statements is particularly simple inembedded SQL.
Instead of having the program paste the data into the statement, which entails various complications,
such as properly quoting the value, you can simply write the name of a C variable into the SQL
statement, prefixed by a colon. For example:
EXEC SQL INSERT INTO sometable VALUES (:v1, ’foo’, :v2);
This statements refers to two C variables named
v1
and
v2
and also uses a regular SQL string literal,
to illustrate that you are not restricted to use one kind of data or the other.
This style of inserting C variables in SQL statements works anywhere a value expression is expected
in an SQL statement.
33.4.2. Declare Sections
To pass data from the program to the database, for example as parameters in a query, or to pass data
from the database back to the program, the C variables that are intended to contain this data need to
be declaredin specially marked sections, so the embeddedSQL preprocessor is made aware of them.
This section starts with:
743
JPEG to PDF Converter | Convert JPEG to PDF, Convert PDF to JPEG
It can be used standalone. JPEG to PDF Converter is able to convert image files to PDF directly without the software Adobe Acrobat Reader for conversion.
adding an image to a pdf form; how to add a jpeg to a pdf
VB.NET PowerPoint: VB Code to Draw and Create Annotation on PPT
as a kind of compensation for limitations (other documents are compatible, including PDF, TIFF, MS VB.NET PPT: VB Code to Add Embedded Image Object to
how to add image to pdf in acrobat; add a picture to a pdf file
Chapter 33. ECPG - Embedded SQL in C
EXEC SQL BEGIN DECLARE SECTION;
and ends with:
EXEC SQL END DECLARE SECTION;
Between those lines, there must be normal C variable declarations, such as:
int
x = 4;
char
foo[16], bar[16];
As you can see, you can optionally assign an initial value to the variable. The variable’s scope is
determinedby the location of its declaring sectionwithinthe program. You canalso declare variables
with the following syntax which implicitly creates a declare section:
EXEC SQL int i = 4;
You can have as many declare sections in a program as youlike.
The declarations are also echoed tothe output file as normalC variables, sothere’s no needto declare
them again. Variables that are not intended to be used in SQL commands can be declared normally
outside these special sections.
The definition of a structure or union also must be listed inside a
DECLARE
section. Otherwise the
preprocessor cannot handle these types since it does not know the definition.
33.4.3. Retrieving Query Results
Now you should be able to pass data generated by your program into an SQL command. But how
do you retrieve the results of a query? For that purpose, embedded SQL provides special variants of
the usual commands
SELECT
and
FETCH
.These commands have a special
INTO
clause that specifies
which host variables the retrieved values are to be stored in.
SELECT
is used for a query that returns
only single row, and
FETCH
is used for a query that returns multiple rows, using a cursor.
Here is an example:
/
*
*
assume this table:
*
CREATE TABLE test1 (a int, b varchar(50));
*
/
EXEC SQL BEGIN DECLARE SECTION;
int v1;
VARCHAR v2;
EXEC SQL END DECLARE SECTION;
...
EXEC SQL SELECT a, b INTO :v1, :v2 FROM test;
So the
INTO
clause appears between the select list and the
FROM
clause. The number of elements in
the select list and the list after
INTO
(also called the target list) must be equal.
Here is an example using the command
FETCH
:
EXEC SQL BEGIN DECLARE SECTION;
int v1;
744
Chapter 33. ECPG - Embedded SQL in C
VARCHAR v2;
EXEC SQL END DECLARE SECTION;
...
EXEC SQL DECLARE foo CURSOR FOR SELECT a, b FROM test;
...
do
{
...
EXEC SQL FETCH NEXT FROM foo INTO :v1, :v2;
...
} while (...);
Here the
INTO
clause appears after all the normal clauses.
33.4.4. Type Mapping
When ECPGapplications exchange values between thePostgreSQL server and theC application, such
as when retrieving query results from the server or executing SQL statements with input parameters,
the values need to be converted between PostgreSQL data types and host language variable types
(C language data types, concretely). One of the main points of ECPG is that it takes care of this
automatically in most cases.
In this respect, there are two kinds of data types: Some simple PostgreSQL data types, such as
integer
and
text
,can be read andwritten by the application directly. Other PostgreSQL data types,
such as
timestamp
and
numeric
can only be accessed through special libraryfunctions;see Section
33.4.4.2.
Table 33-1 shows which PostgreSQL data types correspond to which C data types. When you wish
to send or receive a value of a given PostgreSQL data type, you should declare a C variable of the
corresponding C data type in the declare section.
Table 33-1. Mapping Between PostgreSQL Data Types and C Variable Types
PostgreSQL data type
Host variable type
smallint
short
integer
int
bigint
long long int
decimal
decimal
a
numeric
numeric
a
real
float
double precision
double
smallserial
short
serial
int
bigserial
long long int
oid
unsigned int
character(
n
)
,
varchar(
n
)
,
text
char[
n
+1]
,
VARCHAR[
n
+1]
b
name
char[NAMEDATALEN]
745
Chapter 33. ECPG - Embedded SQL in C
PostgreSQL data type
Host variable type
timestamp
timestamp
a
interval
interval
a
date
date
a
boolean
bool
c
Notes:
a. This type can only be accessed through special library functions; see Section 33.4.4.2.
b. declaredin
ecpglib.h
c. declaredin
ecpglib.h
if not native
33.4.4.1. Handling Character Strings
To handle SQL character string data types, such as
varchar
and
text
,there are two possible ways
to declare the host variables.
One way is using
char[]
,an array of
char
,which is the mostcommon way to handle character data
in C.
EXEC SQL BEGIN DECLARE SECTION;
char str[50];
EXEC SQL END DECLARE SECTION;
Note that youhavetotakecare of the lengthyourself. If youusethishostvariableas the target variable
of a query which returns a string with more than 49 characters, a buffer overflow occurs.
The other way is using the
VARCHAR
type, which is a special type provided by ECPG. The definition
on anarrayof type
VARCHAR
is converted into anamed
struct
for everyvariable. A declaration like:
VARCHAR var[180];
is converted into:
struct varchar_var { int len; char arr[180]; } var;
The member
arr
hosts the string including a terminating zero byte. Thus, to store a string in a
VARCHAR
host variable, the host variable has to be declared with the length including the zero byte
terminator. The member
len
holds the length of the string stored in the
arr
without the terminating
zero byte. When a host variable is used as input for a query, if
strlen(arr)
and
len
are different,
the shorter one is used.
VARCHAR
can be written in upper or lower case, but not in mixed case.
char
and
VARCHAR
host variables can also hold values of other SQL types, which will be stored in
their string forms.
33.4.4.2. Accessing Special Data Types
ECPG contains some special types that help you to interact easily with some special data types from
the PostgreSQL server. In particular, it has implemented support for the
numeric
,
decimal
,
date
,
timestamp
,and
interval
types. These data types cannot usefully be mapped to primitive host
variable types (such as
int
,
long long int
,or
char[]
), because they have a complex internal
structure. Applications deal withthese types bydeclaringhostvariables in specialtypes andaccessing
them using functions in the pgtypes library. The pgtypes library, described in detail in Section 33.6
746
Chapter 33. ECPG - Embedded SQL in C
contains basic functions to deal with those types, such that you do not need to send a query to the
SQL server just for adding an interval to a time stampfor example.
The follow subsections describe these special data types. For more details about pgtypes library func-
tions, see Section 33.6.
33.4.4.2.1. timestamp, date
Here is a pattern for handling
timestamp
variables in the ECPG host application.
First, the program has to include the header file for the
timestamp
type:
#include <pgtypes_timestamp.h>
Next, declare a host variable as type
timestamp
in the declare section:
EXEC SQL BEGIN DECLARE SECTION;
timestamp ts;
EXEC SQL END DECLARE SECTION;
And after reading a value into the host variable, process it using pgtypes library functions.
In following example, the
timestamp
value is converted into text (ASCII) form with the
PGTYPEStimestamp_to_asc()
function:
EXEC SQL SELECT now()::timestamp INTO :ts;
printf("ts = %s\n", PGTYPEStimestamp_to_asc(ts));
This example will showsome result like following:
ts = 2010-06-27 18:03:56.949343
In addition, the DATE type can be handled in the same way. The program has to include
pgtypes_date.h
,declare a host variable as the date type and convert a DATE value into a text
form using
PGTYPESdate_to_asc()
function. For more details about the pgtypes libraryfunctions,
see Section 33.6.
33.4.4.2.2. interval
The handling of the
interval
type is also similar to the
timestamp
and
date
types. It is required,
however, to allocate memory for an
interval
type value explicitly. In other words, the memory
space for the variable has to be allocated in the heap memory, not in the stack memory.
Here is an example program:
#include <stdio.h>
#include <stdlib.h>
#include <pgtypes_interval.h>
int
main(void)
{
EXEC SQL BEGIN DECLARE SECTION;
747
Documents you may be interested
Documents you may be interested