pdf viewer in asp net c# : Adding an image to a pdf in preview control SDK platform web page winforms html web browser postgresql-9.4-A486-part3012

Chapter 33. ECPG - Embedded SQL in C
33.8.3.
SQLSTATE
vs.
SQLCODE
The fields
sqlca.sqlstate
and
sqlca.sqlcode
are two different schemes that provide error
codes. Both are derived from the SQL standard, but
SQLCODE
has been marked deprecated in the
SQL-92 edition of the standard and has been dropped in later editions. Therefore, new applications
are strongly encouraged to use
SQLSTATE
.
SQLSTATE
is a five-character array. The five characters contain digits or upper-case letters that rep-
resent codes of various error and warning conditions.
SQLSTATE
has a hierarchical scheme: the first
two characters indicate the general class of the condition, the last three characters indicate a subclass
of the generalcondition. A successful state is indicated by the code
00000
.The
SQLSTATE
codes are
for the most part defined in the SQL standard. The PostgreSQL server natively supports
SQLSTATE
error codes; therefore a high degree of consistency can be achieved by using this error code scheme
throughout all applications. For further information see Appendix A.
SQLCODE
,the deprecated error code scheme, is a simple integer. A value of 0 indicates success, a
positive value indicates success with additional information, a negative value indicates an error. The
SQL standard only defines the positive value +100, which indicates that the last command returned
or affected zero rows, and no specific negative values. Therefore, this scheme can only achieve poor
portability and does not have a hierarchical code assignment. Historically, the embedded SQL pro-
cessor for PostgreSQL has assignedsome specific
SQLCODE
values for its use, which are listed below
with their numeric value and their symbolic name. Remember that these are notportable to other SQL
implementations. To simplifythe porting of applications to the
SQLSTATE
scheme, the corresponding
SQLSTATE
is also listed. There is, however, no one-to-one or one-to-many mapping between the two
schemes (indeeditis many-to-many), soyoushouldconsult the global
SQLSTATE
listingin Appendix
Ain each case.
These are the assigned
SQLCODE
values:
0(
ECPG_NO_ERROR
)
Indicates no error. (SQLSTATE 00000)
100 (
ECPG_NOT_FOUND
)
This is a harmless condition indicating that the last command retrieved or processed zero rows,
or that you are at the end of the cursor. (SQLSTATE 02000)
When processing a cursor in a loop, you could use this code as a way to detect when toabort the
loop, like this:
while (1)
{
EXEC SQL FETCH ... ;
if (sqlca.sqlcode == ECPG_NOT_FOUND)
break;
}
But
WHENEVER NOT FOUND DO BREAK
effectively does this internally, so there is usually no
advantage inwriting this out explicitly.
-12 (
ECPG_OUT_OF_MEMORY
)
Indicates that your virtual memory is exhausted. The numeric value is defined as
-ENOMEM
.
(SQLSTATE YE001)
788
Adding an image to a pdf in preview - 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 image to pdf file; how to add image to pdf in acrobat
Adding an image to a pdf in preview - 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
acrobat insert image in pdf; how to add image to pdf acrobat
Chapter 33. ECPG - Embedded SQL in C
-200 (
ECPG_UNSUPPORTED
)
Indicates the preprocessor has generatedsomethingthat the library does not knowabout. Perhaps
you are running incompatible versions of the preprocessor and the library. (SQLSTATE YE002)
-201 (
ECPG_TOO_MANY_ARGUMENTS
)
This means that the command specified more host variables than the command expected. (SQL-
STATE 07001 or 07002)
-202 (
ECPG_TOO_FEW_ARGUMENTS
)
This means that the command specified fewer host variables than the command expected. (SQL-
STATE 07001 or 07002)
-203 (
ECPG_TOO_MANY_MATCHES
)
This means a query has returned multiple rows but the statement was only prepared to store one
result row(for example, because the specified variables are not arrays). (SQLSTATE 21000)
-204 (
ECPG_INT_FORMAT
)
The host variable is of type
int
andthe datum in the database is of a different type and contains
avalue that cannot be interpreted as an
int
.The library uses
strtol()
for this conversion.
(SQLSTATE 42804)
-205 (
ECPG_UINT_FORMAT
)
The host variable is of type
unsigned int
and the datum in the database is of a different
type and contains a value that cannot be interpreted as an
unsigned int
.The library uses
strtoul()
for this conversion. (SQLSTATE 42804)
-206 (
ECPG_FLOAT_FORMAT
)
The host variable is of type
float
and the datum inthe database is of another type and contains
avalue that cannot be interpreted as a
float
.The library uses
strtod()
for this conversion.
(SQLSTATE 42804)
-207 (
ECPG_NUMERIC_FORMAT
)
The host variable is of type
numeric
and the datum in the database is of another type and
contains a value that cannot be interpreted as a
numeric
value. (SQLSTATE 42804)
-208 (
ECPG_INTERVAL_FORMAT
)
The host variable is of type
interval
and the datum in the database is of another type and
contains a value that cannot be interpreted as an
interval
value. (SQLSTATE 42804)
-209 (
ECPG_DATE_FORMAT
)
The host variable is of type
date
and the datum in the database is of another type and contains
avalue that cannot be interpreted as a
date
value. (SQLSTATE 42804)
-210 (
ECPG_TIMESTAMP_FORMAT
)
The host variable is of type
timestamp
and the datum in the database is of another type and
contains a value that cannot be interpreted as a
timestamp
value. (SQLSTATE 42804)
-211 (
ECPG_CONVERT_BOOL
)
This means the host variable is of type
bool
and the datum in the database is neither
’t’
nor
’f’
.(SQLSTATE 42804)
-212 (
ECPG_EMPTY
)
The statement sent to the PostgreSQL server was empty. (This cannot normally happen in an
embedded SQL program, so it might point to an internal error.) (SQLSTATE YE002)
789
C# PDF Page Insert Library: insert pages into PDF file in C#.net
applications. Support adding and inserting one or multiple pages to existing PDF document. Forms. Ability to add PDF page number in preview. Offer
how to add image to pdf document; add image to pdf in preview
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.
add jpg to pdf acrobat; add an image to a pdf in preview
Chapter 33. ECPG - Embedded SQL in C
-213 (
ECPG_MISSING_INDICATOR
)
Anull value was returned and no null indicator variable was supplied. (SQLSTATE 22002)
-214 (
ECPG_NO_ARRAY
)
An ordinary variable was used in a place that requires an array. (SQLSTATE 42804)
-215 (
ECPG_DATA_NOT_ARRAY
)
The database returned an ordinary variable in a place that requires array value. (SQLSTATE
42804)
-220 (
ECPG_NO_CONN
)
The program tried to access a connection that does not exist. (SQLSTATE 08003)
-221 (
ECPG_NOT_CONN
)
The program tried to access a connection that does exist but is not open. (This is an internal
error.) (SQLSTATE YE002)
-230 (
ECPG_INVALID_STMT
)
The statement you are trying to use has not been prepared. (SQLSTATE 26000)
-239 (
ECPG_INFORMIX_DUPLICATE_KEY
)
Duplicate key error, violation of unique constraint (Informix compatibility mode). (SQLSTATE
23505)
-240 (
ECPG_UNKNOWN_DESCRIPTOR
)
The descriptor specified was not found. The statement you are trying to use has not been pre-
pared. (SQLSTATE 33000)
-241 (
ECPG_INVALID_DESCRIPTOR_INDEX
)
The descriptor index specified was out of range. (SQLSTATE 07009)
-242 (
ECPG_UNKNOWN_DESCRIPTOR_ITEM
)
An invalid descriptor item was requested. (This is an internal error.) (SQLSTATE YE002)
-243 (
ECPG_VAR_NOT_NUMERIC
)
During the execution of a dynamic statement, thedatabase returned anumeric valueand the host
variable was not numeric. (SQLSTATE 07006)
-244 (
ECPG_VAR_NOT_CHAR
)
During the executionof a dynamic statement, the database returned a non-numeric value and the
host variable was numeric. (SQLSTATE 07006)
-284 (
ECPG_INFORMIX_SUBSELECT_NOT_ONE
)
Aresult of the subquery is not single row (Informix compatibility mode). (SQLSTATE 21000)
-400 (
ECPG_PGSQL
)
Some error caused by the PostgreSQL server. The message contains the error message from the
PostgreSQL server.
-401 (
ECPG_TRANS
)
The PostgreSQL server signaledthatwe cannotstart, commit, or rollbackthetransaction. (SQL-
STATE 08007)
-402 (
ECPG_CONNECT
)
The connection attempt to the database did not succeed. (SQLSTATE 08001)
790
VB.NET PDF insert text library: insert text into PDF content in vb
Multifunctional Visual Studio .NET PDF SDK library supports adding text content to adobe PDF document in VB.NET Add text to PDF in preview without adobe
add picture to pdf file; add image to pdf java
C# Create PDF Library SDK to convert PDF from other file formats
Load PDF from existing documents and image in SQL server. Besides, using this PDF document metadata adding control, you can add some additional
add multiple jpg to pdf; add jpg to pdf file
Chapter 33. ECPG - Embedded SQL in C
-403 (
ECPG_DUPLICATE_KEY
)
Duplicate key error, violation of unique constraint. (SQLSTATE 23505)
-404 (
ECPG_SUBSELECT_NOT_ONE
)
Aresult for the subquery is not single row. (SQLSTATE 21000)
-602 (
ECPG_WARNING_UNKNOWN_PORTAL
)
An invalid cursor name was specified. (SQLSTATE 34000)
-603 (
ECPG_WARNING_IN_TRANSACTION
)
Transaction is in progress. (SQLSTATE 25001)
-604 (
ECPG_WARNING_NO_TRANSACTION
)
There is no active (in-progress) transaction. (SQLSTATE 25P01)
-605 (
ECPG_WARNING_PORTAL_EXISTS
)
An existing cursor name was specified. (SQLSTATE 42P03)
33.9. Preprocessor Directives
Several preprocessor directives are available that modify how the
ecpg
preprocessor parses and pro-
cesses a file.
33.9.1. Including Files
To include an external file into your embeddedSQL program, use:
EXEC SQL INCLUDE
filename
;
EXEC SQL INCLUDE <
filename
>;
EXEC SQL INCLUDE "
filename
";
The embedded SQL preprocessor will look for a file named
filename
.h
,preprocess it, andinclude it
in the resulting C output. Thus, embedded SQL statements in the included file are handled correctly.
The
ecpg
preprocessor will search a file at several directories in following order:
current directory
/usr/local/include
PostgreSQL include directory, defined at build time (e.g.,
/usr/local/pgsql/include
)
/usr/include
But when
EXEC SQL INCLUDE "
filename
"
is used, only the current directory is searched.
In each directory, the preprocessor will first look for the file name as given, and if not found will
append
.h
to the file name and try again (unless the specified file name already has that suffix).
Note that
EXEC SQL INCLUDE
is not the same as:
#include <
filename
.h>
791
C# Word - Insert Image to Word Page in C#.NET
Preview Document. Conversion. Convert Word to PDF. Convert Word to HTML5. VB.NET How-to, VB.NET PDF, VB.NET Word It's a demo code for adding image to word page using
add png to pdf acrobat; add signature image to pdf acrobat
C# PowerPoint - Insert Image to PowerPoint File Page in C#.NET
Preview Document. Conversion. Convert PowerPoint to PDF. Convert PowerPoint to Pages. Annotate PowerPoint. Text Search. Insert Image. Thumbnail Create.
adding jpg to pdf; how to add an image to a pdf in acrobat
Chapter 33. ECPG - Embedded SQL in C
because this file would not be subject to SQL command preprocessing. Naturally, you can continue
to use the C
#include
directive to include other header files.
Note: The include file name is case-sensitive, even though the rest of the
EXEC SQL INCLUDE
command follows the normal SQL case-sensitivity rules.
33.9.2. The define and undef Directives
Similar tothe directive
#define
that is known from C, embedded SQL has a similar concept:
EXEC SQL DEFINE
name
;
EXEC SQL DEFINE
name value
;
So you can define a name:
EXEC SQL DEFINE HAVE_FEATURE;
And you can also define constants:
EXEC SQL DEFINE MYNUMBER 12;
EXEC SQL DEFINE MYSTRING ’abc’;
Use
undef
to remove a previous definition:
EXEC SQL UNDEF MYNUMBER;
Of course you can continue to use the C versions
#define
and
#undef
in your embedded SQL
program. The difference is where your defined values get evaluated. If you use
EXEC SQL DEFINE
thenthe
ecpg
preprocessor evaluates the defines and substitutes the values. For example if you write:
EXEC SQL DEFINE MYNUMBER 12;
...
EXEC SQL UPDATE Tbl SET col = MYNUMBER;
then
ecpg
will already do the substitution and your C compiler will never see any name or identifier
MYNUMBER
.Notethatyou cannot use
#define
for a constant thatyouare going to useinanembedded
SQL query because in this case the embedded SQL precompiler is not able to see this declaration.
33.9.3. ifdef, ifndef, else, elif, and endif Directives
You can use the following directives to compile code sections conditionally:
EXEC SQL ifdef
name
;
Checks a
name
and processes subsequent lines if
name
has been created with
EXEC SQL
define
name
.
EXEC SQL ifndef
name
;
Checks a
name
and processes subsequent lines if
name
has not been created with
EXEC SQL
define
name
.
792
C# TIFF: TIFF Editor SDK to Read & Manipulate TIFF File Using C#.
Easy to generate image thumbnail or preview for Tiff to Tiff, like Word, Excel, PowerPoint, PDF, and images. assemblies into your C# project by adding reference
how to add image to pdf form; add an image to a pdf with acrobat
VB.NET PDF copy, paste image library: copy, paste, cut PDF images
Free Visual Studio .NET PDF library, easy to be integrated in .NET WinForms and ASP.NET. Besides image extracting, adding, and removing, RasterEdge
add jpg to pdf preview; add photo to pdf for
Chapter 33. ECPG - Embedded SQL in C
EXEC SQL else;
Starts processinganalternative sectiontoasectionintroducedbyeither
EXEC SQL ifdef
name
or
EXEC SQL ifndef
name
.
EXEC SQL elif
name
;
Checks
name
and starts an alternative section if
name
has beencreated with
EXEC SQL define
name
.
EXEC SQL endif;
Ends an alternative section.
Example:
EXEC SQL ifndef TZVAR;
EXEC SQL SET TIMEZONE TO ’GMT’;
EXEC SQL elif TZNAME;
EXEC SQL SET TIMEZONE TO TZNAME;
EXEC SQL else;
EXEC SQL SET TIMEZONE TO TZVAR;
EXEC SQL endif;
33.10. Processing Embedded SQL Programs
Now that you have an idea how to form embedded SQL C programs, you probably want to know
how to compile them. Before compiling you run the file through the embedded SQL C preprocessor,
which converts the SQL statements you used to special functioncalls. After compiling, youmustlink
with a special library that contains the needed functions. These functions fetch information from the
arguments, perform the SQL command using the libpq interface, and put the result in the arguments
specified for output.
The preprocessor program is called
ecpg
and is included in a normal PostgreSQL installation. Em-
bedded SQL programs are typically named with an extension
.pgc
.If you have a program file called
prog1.pgc
,you can preprocess it by simply calling:
ecpg prog1.pgc
This will create a file called
prog1.c
.If your input files do not follow the suggested naming pattern,
you can specify the output file explicitly using the
-o
option.
The preprocessed file can be compiled normally, for example:
cc -c prog1.c
The generated C source files include header files from the PostgreSQL installation, so if you in-
stalled PostgreSQL in a location that is not searched by default, you have to add an option such as
-I/usr/local/pgsql/include
to the compilation command line.
To link an embedded SQL program, youneed to include the
libecpg
library, like so:
cc -o myprog prog1.o prog2.o ... -lecpg
793
Chapter 33. ECPG - Embedded SQL in C
Again, you might have to add an option like
-L/usr/local/pgsql/lib
to that command line.
You can use
pg_config
or
pkg-config
with package name
libecpg
to get the paths for your
installation.
If you manage the build process of a larger project using make, it might be convenient to include the
following implicit rule to your makefiles:
ECPG = ecpg
%.c: %.pgc
$(ECPG) $<
The complete syntax of the
ecpg
command is detailed in ecpg.
The ecpg libraryis thread-safe bydefault. However, youmightneedto use some threadingcommand-
line options to compile your client code.
33.11. Library Functions
The
libecpg
library primarily contains “hidden” functions that are used to implement the function-
ality expressed by the embedded SQL commands. But there are some functions that can usefully be
called directly. Note that this makes your code unportable.
ECPGdebug(int
on
, FILE
*stream
)
turns on debug logging if called with the first argument
non-zero. Debug logging is done on
stream
.The log contains all SQL statements with all the
input variables inserted, and the results from the PostgreSQL server. This can be very useful when
searching for errors in your SQL statements.
Note: On Windows, if the ecpg libraries and an application are compiled with different flags,
this function call will crash the application because the internal representation of the
FILE
pointers differ. Specifically, multithreaded/single-threaded, release/debug, and static/dynamic
flags should be the samefor the library and all applications using that library.
ECPGget_PGconn(const char
*
connection_name
)
returns the library database connection
handle identified by the given name. If
connection_name
is set to
NULL
,the current connec-
tion handle is returned. If no connection handle can be identified, the function returns
NULL
.The
returned connection handle can be used to call any other functions from libpq, if necessary.
Note: It is a bad ideato manipulate database connectionhandles madefrom ecpg directly with
libpq routines.
ECPGtransactionStatus(const char
*connection_name
)
returns the current transaction
status of the given connection identified by
connection_name
. See Section 31.2 and libpq’s
PQtransactionStatus()
for details about the returned status codes.
794
Chapter 33. ECPG - Embedded SQL in C
ECPGstatus(int
lineno
, const char
connection_name
)
returns true if youareconnected
to a database and false if not.
connection_name
can be
NULL
if a single connection is beingused.
33.12. Large Objects
Large objects are not directly supported by ECPG, but ECPG application can manipulate large ob-
jects through the libpq large object functions, obtaining the necessary
PGconn
object by calling
the
ECPGget_PGconn()
function. (However, use of the
ECPGget_PGconn()
function and touch-
ing
PGconn
objects directly should be done very carefully and ideally not mixed with other ECPG
database access calls.)
For more details about the
ECPGget_PGconn()
,see Section 33.11. For information about the large
object function interface, see Chapter 32.
Large object functions have to be called in a transaction block, so when autocommit is off,
BEGIN
commands have to be issued explicitly.
Example 33-2shows anexample program that illustrates how to create, write, and read a large object
in an ECPG application.
Example 33-2. ECPG Program Accessing Large Objects
#include <stdio.h>
#include <stdlib.h>
#include <libpq-fe.h>
#include <libpq/libpq-fs.h>
EXEC SQL WHENEVER SQLERROR STOP;
int
main(void)
{
PGconn
*
conn;
Oid
loid;
int
fd;
char
buf[256];
int
buflen = 256;
char
buf2[256];
int
rc;
memset(buf, 1, buflen);
EXEC SQL CONNECT TO testdb AS con1;
conn = ECPGget_PGconn("con1");
printf("conn = %p\n", conn);
/
*
create
*
/
loid = lo_create(conn, 0);
if (loid &lt; 0)
printf("lo_create() failed: %s", PQerrorMessage(conn));
printf("loid = %d\n", loid);
/
*
write test
*
/
795
Chapter 33. ECPG - Embedded SQL in C
fd = lo_open(conn, loid, INV_READ|INV_WRITE);
if (fd &lt; 0)
printf("lo_open() failed: %s", PQerrorMessage(conn));
printf("fd = %d\n", fd);
rc = lo_write(conn, fd, buf, buflen);
if (rc &lt; 0)
printf("lo_write() failed\n");
rc = lo_close(conn, fd);
if (rc &lt; 0)
printf("lo_close() failed: %s", PQerrorMessage(conn));
/
*
read test
*
/
fd = lo_open(conn, loid, INV_READ);
if (fd &lt; 0)
printf("lo_open() failed: %s", PQerrorMessage(conn));
printf("fd = %d\n", fd);
rc = lo_read(conn, fd, buf2, buflen);
if (rc &lt; 0)
printf("lo_read() failed\n");
rc = lo_close(conn, fd);
if (rc &lt; 0)
printf("lo_close() failed: %s", PQerrorMessage(conn));
/
*
check
*
/
rc = memcmp(buf, buf2, buflen);
printf("memcmp() = %d\n", rc);
/
*
cleanup
*
/
rc = lo_unlink(conn, loid);
if (rc &lt; 0)
printf("lo_unlink() failed: %s", PQerrorMessage(conn));
EXEC SQL COMMIT;
EXEC SQL DISCONNECT ALL;
return 0;
}
33.13. C++ Applications
ECPG has some limited support for C++ applications. This section describes some caveats.
The
ecpg
preprocessor takes an input file written in C (or something like C) and embedded SQL
commands, converts the embedded SQL commands into C language chunks, and finally generates a
.c
file. The header file declarations of the library functions used by the C language chunks that
ecpg
generates are wrapped in
extern "C" { ... }
blocks when used under C++, sothey should work
seamlessly in C++.
In general, however, the
ecpg
preprocessor only understands C; it does not handle the special syntax
and reserved words of the C++ language. So, some embedded SQL code written in C++ application
796
Chapter 33. ECPG - Embedded SQL in C
code that uses complicated features specific to C++ might fail to be preprocessed correctly or might
not work as expected.
Asafe way to use the embedded SQL code in a C++ application is hiding the ECPG calls in a C
module, which the C++ application code calls into to access the database, and linking that together
with the rest of the C++ code. See Section 33.13.2 about that.
33.13.1. Scope for Host Variables
The
ecpg
preprocessor understands the scope of variables in C. In the C language, this is rather
simple because the scopes of variables is based on their code blocks. In C++, however, the class
member variables are referenced in a different code block from the declared position, so the
ecpg
preprocessor will not understandthe scope of the class member variables.
For example, in the followingcase, the
ecpg
preprocessor cannot findany declaration for the variable
dbname
in the
test
method, so anerror will occur.
class TestCpp
{
EXEC SQL BEGIN DECLARE SECTION;
char dbname[1024];
EXEC SQL END DECLARE SECTION;
public:
TestCpp();
void test();
~TestCpp();
};
TestCpp::TestCpp()
{
EXEC SQL CONNECT TO testdb1;
}
void Test::test()
{
EXEC SQL SELECT current_database() INTO :dbname;
printf("current_database = %s\n", dbname);
}
TestCpp::~TestCpp()
{
EXEC SQL DISCONNECT ALL;
}
This code will result in an error like this:
ecpg test_cpp.pgc
test_cpp.pgc:28: ERROR: variable "dbname" is not declared
To avoid this scope issue, the
test
method could be modified to use a local variable as intermedi-
ate storage. But this approach is only a poor workaround, because it uglifies the code and reduces
performance.
void TestCpp::test()
797
Documents you may be interested
Documents you may be interested