pdf viewer in asp net c# : Adding images to pdf SDK Library project wpf .net azure UWP postgresql-9.4-A482-part3008

Chapter 33. ECPG - Embedded SQL in C
interval
*
in;
EXEC SQL END DECLARE SECTION;
EXEC SQL CONNECT TO testdb;
in = PGTYPESinterval_new();
EXEC SQL SELECT ’1 min’::interval INTO :in;
printf("interval = %s\n", PGTYPESinterval_to_asc(in));
PGTYPESinterval_free(in);
EXEC SQL COMMIT;
EXEC SQL DISCONNECT ALL;
return 0;
}
33.4.4.2.3. numeric, decimal
The handlingof the
numeric
and
decimal
types issimilar tothe
interval
type:Itrequires defining
apointer, allocating some memory space on the heap, and accessing the variable using the pgtypes
library functions. For more details about the pgtypes library functions, see Section 33.6.
No functions are provided specifically for the
decimal
type. An application has to convert it to a
numeric
variable using a pgtypes library function to do further processing.
Here is an example program handling
numeric
and
decimal
type variables.
#include <stdio.h>
#include <stdlib.h>
#include <pgtypes_numeric.h>
EXEC SQL WHENEVER SQLERROR STOP;
int
main(void)
{
EXEC SQL BEGIN DECLARE SECTION;
numeric
*
num;
numeric
*
num2;
decimal
*
dec;
EXEC SQL END DECLARE SECTION;
EXEC SQL CONNECT TO testdb;
num = PGTYPESnumeric_new();
dec = PGTYPESdecimal_new();
EXEC SQL SELECT 12.345::numeric(4,2), 23.456::decimal(4,2) INTO :num, :dec;
printf("numeric = %s\n", PGTYPESnumeric_to_asc(num, 0));
printf("numeric = %s\n", PGTYPESnumeric_to_asc(num, 1));
printf("numeric = %s\n", PGTYPESnumeric_to_asc(num, 2));
/
*
Convert decimal to numeric to show a decimal value.
*
/
num2 = PGTYPESnumeric_new();
PGTYPESnumeric_from_decimal(dec, num2);
748
Adding images to pdf - 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
adding a png to a pdf; add jpeg signature to pdf
Adding images to pdf - 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 for; add signature image to pdf
Chapter 33. ECPG - Embedded SQL in C
printf("decimal = %s\n", PGTYPESnumeric_to_asc(num2, 0));
printf("decimal = %s\n", PGTYPESnumeric_to_asc(num2, 1));
printf("decimal = %s\n", PGTYPESnumeric_to_asc(num2, 2));
PGTYPESnumeric_free(num2);
PGTYPESdecimal_free(dec);
PGTYPESnumeric_free(num);
EXEC SQL COMMIT;
EXEC SQL DISCONNECT ALL;
return 0;
}
33.4.4.3. Host Variables with Nonprimitive Types
As a host variable you can also use arrays, typedefs, structs, and pointers.
33.4.4.3.1. Arrays
There are two use cases for arrays as host variables. The first is a way to store some text string in
char[]
or
VARCHAR[]
,as explained Section 33.4.4.1. The second use case is to retrieve multiple
rows from a queryresult without usinga cursor. Withoutan array, toprocess a query result consisting
of multiple rows, it is required to use a cursor and the
FETCH
command. But with array host vari-
ables, multiple rows can be received at once. The length of the array has to be defined to be able to
accommodate all rows, otherwise a buffer overflow will likely occur.
Following example scans the
pg_database
system table and shows all OIDs and names of the avail-
able databases:
int
main(void)
{
EXEC SQL BEGIN DECLARE SECTION;
int dbid[8];
char dbname[8][16];
int i;
EXEC SQL END DECLARE SECTION;
memset(dbname, 0, sizeof(char)
*
16
*
8);
memset(dbid, 0, sizeof(int)
*
8);
EXEC SQL CONNECT TO testdb;
/
*
Retrieve multiple rows into arrays at once.
*
/
EXEC SQL SELECT oid,datname INTO :dbid, :dbname FROM pg_database;
for (i = 0; i < 8; i++)
printf("oid=%d, dbname=%s\n", dbid[i], dbname[i]);
EXEC SQL COMMIT;
EXEC SQL DISCONNECT ALL;
return 0;
749
VB.NET PDF Library SDK to view, edit, convert, process PDF file
Feel free to define text or images on PDF document and extract accordingly. Capable of adding PDF file navigation features to your VB.NET program.
add image pdf; add jpg signature to pdf
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
Support adding PDF page number. Offer PDF page break inserting function. DLLs for Adding Page into PDF Document in VB.NET Class. Add necessary references:
adding an image to a pdf in acrobat; add png to pdf preview
Chapter 33. ECPG - Embedded SQL in C
}
This example shows following result. (The exact values depend on local circumstances.)
oid=1, dbname=template1
oid=11510, dbname=template0
oid=11511, dbname=postgres
oid=313780, dbname=testdb
oid=0, dbname=
oid=0, dbname=
oid=0, dbname=
33.4.4.3.2. Structures
Astructure whose member names match the column names of a query result, can be used to retrieve
multiple columns at once. The structure enables handling multiple column values in a single host
variable.
The following example retrieves OIDs, names, and sizes of the available databases from the
pg_database
system table and using the
pg_database_size()
function. In this example, a
structure variable
dbinfo_t
with members whose names match each column in the
SELECT
result
is used to retrieve one result row without putting multiple host variables in the
FETCH
statement.
EXEC SQL BEGIN DECLARE SECTION;
typedef struct
{
int oid;
char datname[65];
long long int size;
} dbinfo_t;
dbinfo_t dbval;
EXEC SQL END DECLARE SECTION;
memset(&dbval, 0, sizeof(dbinfo_t));
EXEC SQL DECLARE cur1 CURSOR FOR SELECT oid, datname, pg_database_size(oid) AS size FROM pg_database;
EXEC SQL OPEN cur1;
/
*
when end of result set reached, break out of while loop
*
/
EXEC SQL WHENEVER NOT FOUND DO BREAK;
while (1)
{
/
*
Fetch multiple columns into one structure.
*
/
EXEC SQL FETCH FROM cur1 INTO :dbval;
/
*
Print members of the structure.
*
/
printf("oid=%d, datname=%s, size=%lld\n", dbval.oid, dbval.datname, dbval.size);
}
EXEC SQL CLOSE cur1;
750
C# PDF Page Insert Library: insert pages into PDF file in C#.net
By using reliable APIs, C# programmers are capable of adding and inserting (empty) PDF page or pages from various file formats, such as PDF, Tiff, Word, Excel
add picture to pdf online; how to add a picture to a pdf file
C# PDF insert text Library: insert text into PDF content in C#.net
Supports adding text to PDF in preview without adobe reader installed in ASP.NET. Powerful .NET PDF edit control allows modify existing scanned PDF text.
adding a jpg to a pdf; add an image to a pdf in preview
Chapter 33. ECPG - Embedded SQL in C
This example shows following result. (The exact values depend on local circumstances.)
oid=1, datname=template1, size=4324580
oid=11510, datname=template0, size=4243460
oid=11511, datname=postgres, size=4324580
oid=313780, datname=testdb, size=8183012
Structure host variables “absorb” as many columns as the structure as fields. Additional columns can
be assigned to other host variables. For example, the above program could also be restructured like
this, with the
size
variable outside the structure:
EXEC SQL BEGIN DECLARE SECTION;
typedef struct
{
int oid;
char datname[65];
} dbinfo_t;
dbinfo_t dbval;
long long int size;
EXEC SQL END DECLARE SECTION;
memset(&dbval, 0, sizeof(dbinfo_t));
EXEC SQL DECLARE cur1 CURSOR FOR SELECT oid, datname, pg_database_size(oid) AS size FROM pg_database;
EXEC SQL OPEN cur1;
/
*
when end of result set reached, break out of while loop
*
/
EXEC SQL WHENEVER NOT FOUND DO BREAK;
while (1)
{
/
*
Fetch multiple columns into one structure.
*
/
EXEC SQL FETCH FROM cur1 INTO :dbval, :size;
/
*
Print members of the structure.
*
/
printf("oid=%d, datname=%s, size=%lld\n", dbval.oid, dbval.datname, size);
}
EXEC SQL CLOSE cur1;
33.4.4.3.3. Typedefs
Use the
typedef
keyword to map new types to already existing types.
EXEC SQL BEGIN DECLARE SECTION;
typedef char mychartype[40];
typedef long serial_t;
EXEC SQL END DECLARE SECTION;
Note that you could also use:
EXEC SQL TYPE serial_t IS long;
751
VB.NET Image: How to Draw Annotation on Doc Images with Image SDK
to mark and annotate your local images (such as page TIFF, Microsoft Office Word and PDF file other image annotating tutorials besides adding annotation using VB
how to add image to pdf; adding an image to a pdf
VB.NET Image: Adding Line Annotation to Images with VB.NET Doc
NET full sample codes for printing line annotation on images. VB.NET Image Line Annotation Overview. Mature image processing library for adding line annotation
how to add jpg to pdf file; add picture pdf
Chapter 33. ECPG - Embedded SQL in C
This declaration does not need to be part of a declare section.
33.4.4.3.4. Pointers
You can declare pointers to the most common types. Note however that you cannot use pointers as
target variables of queries without auto-allocation. See Section 33.7 for more information on auto-
allocation.
EXEC SQL BEGIN DECLARE SECTION;
int
*
intp;
char
**
charp;
EXEC SQL END DECLARE SECTION;
33.4.5. Handling Nonprimitive SQL Data Types
This section contains information on how to handle nonscalar and user-defined SQL-level data types
in ECPG applications. Note that this is distinct from the handling of host variables of nonprimitive
types, described in the previous section.
33.4.5.1. Arrays
Multi-dimensionalSQL-level arrays are notdirectly supportedin ECPG. One-dimensionalSQL-level
arrays can be mapped intoC array host variables andvice-versa. However, when creating a statement
ecpg does not know the types of the columns, so that it cannot check if a C array is input into a cor-
responding SQL-level array. When processing the output of a SQL statement, ecpg has the necessary
information and thus checks if both are arrays.
If a query accesses elements of an array separately, then this avoids the use of arrays in ECPG. Then,
ahost variable with a type that can be mapped to the element type should be used. For example, if a
columntype is array of
integer
,a host variable of type
int
can be used. Also if the element type is
varchar
or
text
,a host variable of type
char[]
or
VARCHAR[]
can be used.
Here is an example. Assume the following table:
CREATE TABLE t3 (
ii integer[]
);
testdb=> SELECT
*
FROM t3;
ii
-------------
{1,2,3,4,5}
(1 row)
The followingexample program retrieves the 4thelementof thearray and stores it into a host variable
of type
int
:
EXEC SQL BEGIN DECLARE SECTION;
int ii;
EXEC SQL END DECLARE SECTION;
752
C# PDF Library SDK to view, edit, convert, process PDF file for C#
Support protecting PDF file by adding password and digital signatures with C# sample code in .NET Class. Feel free to define text or images on PDF document and
how to add image to pdf file; how to add an image to a pdf in acrobat
VB.NET PDF insert text library: insert text into PDF content in vb
VB.NET PDF - Insert Text to PDF Document in VB.NET. Providing Demo Code for Adding and Inserting Text to PDF File Page in VB.NET Program.
add image to pdf in preview; acrobat insert image in pdf
Chapter 33. ECPG - Embedded SQL in C
EXEC SQL DECLARE cur1 CURSOR FOR SELECT ii[4] FROM t3;
EXEC SQL OPEN cur1;
EXEC SQL WHENEVER NOT FOUND DO BREAK;
while (1)
{
EXEC SQL FETCH FROM cur1 INTO :ii ;
printf("ii=%d\n", ii);
}
EXEC SQL CLOSE cur1;
This example shows the following result:
ii=4
To map multiple array elements to the multiple elements in an array type host variables each ele-
ment of array column and each element of the host variable array have to be managed separately, for
example:
EXEC SQL BEGIN DECLARE SECTION;
int ii_a[8];
EXEC SQL END DECLARE SECTION;
EXEC SQL DECLARE cur1 CURSOR FOR SELECT ii[1], ii[2], ii[3], ii[4] FROM t3;
EXEC SQL OPEN cur1;
EXEC SQL WHENEVER NOT FOUND DO BREAK;
while (1)
{
EXEC SQL FETCH FROM cur1 INTO :ii_a[0], :ii_a[1], :ii_a[2], :ii_a[3];
...
}
Note again that
EXEC SQL BEGIN DECLARE SECTION;
int ii_a[8];
EXEC SQL END DECLARE SECTION;
EXEC SQL DECLARE cur1 CURSOR FOR SELECT ii FROM t3;
EXEC SQL OPEN cur1;
EXEC SQL WHENEVER NOT FOUND DO BREAK;
while (1)
{
/
*
WRONG
*
/
EXEC SQL FETCH FROM cur1 INTO :ii_a;
...
}
753
C# PDF Annotate Library: Draw, edit PDF annotation, markups in C#.
Provide users with examples for adding text box to PDF and edit font size and color in text box field in C#.NET program. C#.NET: Draw Markups on PDF File.
add an image to a pdf form; add jpg to pdf preview
Chapter 33. ECPG - Embedded SQL in C
would not work correctly in this case, because you cannot map an array type column to an array host
variable directly.
Another workaround is to store arrays in their external string representation in host variables of type
char[]
or
VARCHAR[]
.For more details about this representation, see Section 8.15.2. Note that this
means that the array cannot be accessed naturally as an array in the host program (without further
processing that parses the text representation).
33.4.5.2. Composite Types
Composite types are not directly supported in ECPG, but an easy workaround is possible. The avail-
able workarounds are similar to the ones described for arrays above: Either access each attribute
separately or use the external string representation.
For the following examples, assume the following type and table:
CREATE TYPE comp_t AS (intval integer, textval varchar(32));
CREATE TABLE t4 (compval comp_t);
INSERT INTO t4 VALUES ( (256, ’PostgreSQL’) );
The most obvious solution is to access eachattribute separately. The following program retrieves data
from the example table by selecting each attribute of the type
comp_t
separately:
EXEC SQL BEGIN DECLARE SECTION;
int intval;
varchar textval[33];
EXEC SQL END DECLARE SECTION;
/
*
Put each element of the composite type column in the SELECT list.
*
/
EXEC SQL DECLARE cur1 CURSOR FOR SELECT (compval).intval, (compval).textval FROM t4;
EXEC SQL OPEN cur1;
EXEC SQL WHENEVER NOT FOUND DO BREAK;
while (1)
{
/
*
Fetch each element of the composite type column into host variables.
*
/
EXEC SQL FETCH FROM cur1 INTO :intval, :textval;
printf("intval=%d, textval=%s\n", intval, textval.arr);
}
EXEC SQL CLOSE cur1;
To enhance thisexample, the host variables to storevalues inthe
FETCH
commandcanbegatheredinto
one structure. For more details about the host variable in the structure form, see Section 33.4.4.3.2.
To switch to the structure, the example can be modified as below. The two host variables,
intval
and
textval
,become members of the
comp_t
structure, and the structure is specified on the
FETCH
command.
EXEC SQL BEGIN DECLARE SECTION;
typedef struct
{
int intval;
varchar textval[33];
754
Chapter 33. ECPG - Embedded SQL in C
} comp_t;
comp_t compval;
EXEC SQL END DECLARE SECTION;
/
*
Put each element of the composite type column in the SELECT list.
*
/
EXEC SQL DECLARE cur1 CURSOR FOR SELECT (compval).intval, (compval).textval FROM t4;
EXEC SQL OPEN cur1;
EXEC SQL WHENEVER NOT FOUND DO BREAK;
while (1)
{
/
*
Put all values in the SELECT list into one structure.
*
/
EXEC SQL FETCH FROM cur1 INTO :compval;
printf("intval=%d, textval=%s\n", compval.intval, compval.textval.arr);
}
EXEC SQL CLOSE cur1;
Although a structure is used in the
FETCH
command, the attribute names in the
SELECT
clause are
specified one by one. This canbe enhancedby using a
*
to ask for all attributes of the composite type
value.
...
EXEC SQL DECLARE cur1 CURSOR FOR SELECT (compval).
*
FROM t4;
EXEC SQL OPEN cur1;
EXEC SQL WHENEVER NOT FOUND DO BREAK;
while (1)
{
/
*
Put all values in the SELECT list into one structure.
*
/
EXEC SQL FETCH FROM cur1 INTO :compval;
printf("intval=%d, textval=%s\n", compval.intval, compval.textval.arr);
}
...
This way, composite types canbe mappedinto structures almost seamlessly, even though ECPG does
not understand the composite type itself.
Finally, it is also possible tostore composite type values in their external string representation in host
variables of type
char[]
or
VARCHAR[]
.But that way, it is not easily possible to access the fields of
the value from the host program.
33.4.5.3. User-defined Base Types
Newuser-defined base types are not directlysupported byECPG. You can use the externalstring rep-
resentation and host variables of type
char[]
or
VARCHAR[]
,and this solution is indeed appropriate
and sufficient for many types.
Here is an example using the data type
complex
from the example in Section 35.11. The external
string representation of that type is
(%lf,%lf)
,which is defined in the functions
complex_in()
755
Chapter 33. ECPG - Embedded SQL in C
and
complex_out()
functions in Section 35.11. The following example inserts the complex type
values
(1,1)
and
(3,3)
into the columns
a
and
b
,and select them from the table after that.
EXEC SQL BEGIN DECLARE SECTION;
varchar a[64];
varchar b[64];
EXEC SQL END DECLARE SECTION;
EXEC SQL INSERT INTO test_complex VALUES (’(1,1)’, ’(3,3)’);
EXEC SQL DECLARE cur1 CURSOR FOR SELECT a, b FROM test_complex;
EXEC SQL OPEN cur1;
EXEC SQL WHENEVER NOT FOUND DO BREAK;
while (1)
{
EXEC SQL FETCH FROM cur1 INTO :a, :b;
printf("a=%s, b=%s\n", a.arr, b.arr);
}
EXEC SQL CLOSE cur1;
This example shows following result:
a=(1,1), b=(3,3)
Another workaround is avoiding the direct use of the user-defined types in ECPG and instead create
afunction or cast that converts between the user-defined type and a primitive type that ECPG can
handle. Note, however, that type casts, especially implicit ones, should be introduced into the type
system very carefully.
For example,
CREATE FUNCTION create_complex(r double, i double) RETURNS complex
LANGUAGE SQL
IMMUTABLE
AS $$ SELECT $1
*
complex ’(1,0’)’ + $2
*
complex ’(0,1)’ $$;
After this definition, the following
EXEC SQL BEGIN DECLARE SECTION;
double a, b, c, d;
EXEC SQL END DECLARE SECTION;
a = 1;
b = 2;
c = 3;
d = 4;
EXEC SQL INSERT INTO test_complex VALUES (create_complex(:a, :b), create_complex(:c, :d));
has the same effect as
EXEC SQL INSERT INTO test_complex VALUES (’(1,2)’, ’(3,4)’);
756
Chapter 33. ECPG - Embedded SQL in C
33.4.6. Indicators
The examples above do not handle null values. In fact, the retrieval examples will raise an error if
they fetch a null value from the database. To be able to pass null values to the database or retrieve
null values from the database, you need to append a second host variable specification to each host
variable that contains data. This second host variable is called the indicator and contains a flag that
tells whether the datum is null, in which case the value of the real host variable is ignored. Here is an
example that handles the retrieval of null values correctly:
EXEC SQL BEGIN DECLARE SECTION;
VARCHAR val;
int val_ind;
EXEC SQL END DECLARE SECTION:
...
EXEC SQL SELECT b INTO :val :val_ind FROM test1;
The indicator variable
val_ind
will be zero if the value was not null, and it will be negative if the
value was null.
The indicator has another function:if the indicator value is positive, it means that the valueis not null,
but it was truncated when it was stored in the host variable.
If the argument
-r no_indicator
is passed to the preprocessor
ecpg
,it works in “no-indicator”
mode. In no-indicator mode, if no indicator variable is specified, null values are signaled (on input
andoutput) for character string types as emptystringandfor integer types as the lowestpossible value
for type (for example,
INT_MIN
for
int
).
33.5. Dynamic SQL
In many cases, the particular SQL statements that an application has toexecute are known at the time
the application is written. In some cases, however, the SQL statements are composed at run time or
provided by an externalsource. In these cases youcannot embed the SQL statements directly into the
Csource code, but there is a facilitythatallows you to call arbitrary SQL statements that you provide
in a string variable.
33.5.1. Executing Statements without a Result Set
The simplest way to execute an arbitrary SQL statement is to use the command
EXECUTE
IMMEDIATE
.For example:
EXEC SQL BEGIN DECLARE SECTION;
const char
*
stmt = "CREATE TABLE test1 (...);";
EXEC SQL END DECLARE SECTION;
EXEC SQL EXECUTE IMMEDIATE :stmt;
EXECUTE IMMEDIATE
can be used for SQL statements that do not return a result set (e.g., DDL,
INSERT
,
UPDATE
,
DELETE
). Youcannot execute statements that retrieve data (e.g.,
SELECT
)this way.
The next section describes how to do that.
757
Documents you may be interested
Documents you may be interested