Java Programming with Oracle JDBC 1st ed Edition Donald Bales - The ebook is ready for download to explore the complete content
Java Programming with Oracle JDBC 1st ed Edition Donald Bales - The ebook is ready for download to explore the complete content
com
https://ebookname.com/product/java-programming-with-oracle-
jdbc-1st-ed-edition-donald-bales/
OR CLICK HERE
DOWLOAD EBOOK
https://ebookname.com/product/oracle-and-java-development-1st-ed-
edition-bulusu-lakshman/
https://ebookname.com/product/oracle-database-programming-using-
java-and-web-services-1st-edition-kuassi-mensah/
https://ebookname.com/product/beginning-programming-with-java-
for-dummies-2nd-ed-edition-barry-a-burd/
https://ebookname.com/product/knowledge-management-1st-edition-
elias-m-awad/
The Hood Battalion Royal Naval Division Antwerp
Gallipol Leonard Sellars
https://ebookname.com/product/the-hood-battalion-royal-naval-
division-antwerp-gallipol-leonard-sellars/
https://ebookname.com/product/happily-never-after-1st-edition-
lynn-painter/
https://ebookname.com/product/transport-and-coherent-structures-
in-wall-turbulence-1st-edition-sedat-tardu/
https://ebookname.com/product/encyclopedia-of-drugs-alcohol-and-
addictive-behavior-2nd-edition-rosalyn-carson-dewitt/
https://ebookname.com/product/handbook-of-the-economics-of-
international-migration-1st-edition-barry-r-chiswick-and-paul-w-
miller-eds/
Mah■bh■rata 1st ed Edition Bowles
https://ebookname.com/product/mahabharata-1st-ed-edition-bowles/
Java Programming with Oracle JDBC
Donald Bales
Publisher: O'Reilly
First Edition January 2002
ISBN: 0-596-00088-x, 496 pages
By GiantDino
Preface
Why I Wrote This Book
This Book's Intended Audience
Structure of This Book
Conventions Used in This Book
Software and Versions
Comments and Questions
Acknowledgments
I: Overview
Introduction to JDBC
1.1 The JDBC API
1.2 Clients
1.3 Using SQL
II: Connections
9. Statements
9.1 Creating a Statement Object
9.2 The execute( ) Method
9.3 The executeUpdate( ) Method
9.4 The executeQuery( ) Method
9.5 OracleStatement Implements Statement
V: Essentials
17. Transactions
17.1 Manual Transactions
17.2 Transaction Scope
17.3 Implicit Locking and Visibility
17.4 Isolation Levels
17.5 Distributed Transactions
19. Performance
19.1 A Testing Framework
19.2 Auto-Commit
19.3 SQL92 Token Parsing
19.4 Statement Versus PreparedStatement
19.5 Batching
19.6 Predefined SELECT Statements
19.7 CallableStatements
19.8 OCI Versus Thin Drivers
20. Troubleshooting
20.1 The "Gotchas"
20.2 Unsupported Features
20.3 Debugging
20.4 Net8 Tracing
20.5 Wait for the Cure
Colophon
Preface
Oracle is the write-once-run-anywhere database. Since the mid-1980s, Oracle has been available
on almost every operating system. With the release of Oracle RDBMS Version 6, you could
develop a database schema on your desktop knowing it could be implemented unchanged on
multiple large-scale platforms. With the release of Oracle7, stored procedures could be written
using PL/SQL, and once again, these could be ported to any supported operating system.
Oracle8 brought object orientation, and Oracle8i brought internal support for Java . These
releases represent 15-plus years of demonstrated commitment by Oracle Corporation to make
Oracle the write-once-run-anywhere database. But platform independence alone did not make
Oracle the dominant database in the marketplace. Other factors contributed as well:
Open-systems initiatives
Oracle grew up with Unix and therefore carries an open-systems attitude that has
fostered innovation and acute customer awareness.
Configurable resources
The Oracle RDBMS resources, such as filesystem and memory usage, are configurable
and manageable by the DBA. As a result, an Oracle database can be tuned for the task
at hand, whether that task is transaction processing, batch processing, or decision
support.
Leading technology
Oracle has consistently led the relational database industry technologically. From time to
time, competitors have temporarily leaped ahead of Oracle in a niche, but Oracle has
always retaken the lead.
You may have already guessed that I am an Oracle advocate. I have had 16 years of experience
with Oracle and its competitors, and this alone has taught me to respect the product. A more
telling story is how many developers who have worked with Oracle tell me all the things they miss
when they work with another product.
I got involved with Oracle accidentally. The company I was working for had acquired one of its
competitors, and I was sent to the West Coast to convert the reports from something called a
relational database to COBOL VSAM/ISAM programs on a minicomputer. The reason for the
conversion was the poor performance of the acquired company's reports. During the conversion, I
heard all the badmouthing going around at that time about relational technology. My thoughts at
the time were that, performance aside, relational technology greatly simplified decision-support
development. And, had the reports I was converting been done right, performance would not
have been an issue.
After that experience, I felt that eventually, relational database technology would dominate the
development market, so I decided to research the products available and pick the one that I
thought would emerge as the market leader. After several months of research, I decided on
Oracle, which at the time was just in Version 5. Since that time, I have been working with Oracle
and, from time to time, its competitors. Over the years, I have used COBOL, Pro*COBOL, C,
Windows SDK, Pro*C, OCI, C++, Smalltalk, Visual Basic, PowerBuilder, PL/SQL, and Java as
client development languages -- all to access an Oracle database. With my varied experience, I
still remember my first mistakes with Oracle -- performing that conversion was the very first.
I have learned more than anything else that the only reason a relational database performs poorly
is because we don't use it like a relational database. On that first project with Oracle, the previous
programmers were performing data processing the slow way: they opened cursors on different
tables and did fetches until they found a match between tables, essentially doing full table scans
and not using the database to perform the joins. There was really no reason to badmouth
relational technology back then, except for our own ignorance. Boy, I sure could have used a
good O'Reilly book on Oracle back when I did that conversion.
While Oracle was growing as the database product of choice, Sun Microsystems released Java in
the mid-1990s. Since that time, Java has gone from being considered an applet language, a
client-side language, a server-side language, an enterprise application language, and now, with
Oracle8i, an object-relational database language. That is so cool. Now we can leverage the
strength of relational technology and object orientation in our enterprise applications on both
client and server. But to leverage this technology to build enterprise applications, we need to
have a solid foundation. That is what this book is all about. Oracle Java DataBase Connectivity
(JDBC) is the foundation for all your Java/Oracle applications.
This is a book written by a programmer for programmers. I try to include enough detail to get the
novice up and running without boring the experienced programmer to death. My hope is that this
book will guide you through the process of making a connection and executing SQL statements
while maintaining database integrity and enabling you to use all the database technologies
offered by Oracle.
I am often asked, "What's the best way for me to learn Oracle?" Wow! Now that's a loaded
question. To learn Oracle is a big task, because Oracle is a big product. But I always respond
with these suggestions:
• Better yet, sign up for a technology track or two. Technology tracks cost $200 each. For
your $200, you get four updates a year on a CD of all the software for a track. For $400,
you can get either the NT Servers or Linux Servers tracks along with the NT
Development Tools track and have a complete setup for learning Oracle.
• Do some serious studying. Read the Oracle Concepts Manual. Then read Oracle: The
Complete Reference, by George Koch and Kevin Loney (Osborne McGraw-Hill). Follow
that with the Oracle Developer's Guide. Then finish your beginner's work by reading
Oracle PL/SQL Programming by Steven Feuerstein with Bill Pribyl (O'Reilly). O'Reilly has
several other books on Oracle that you will find helpful. Check them out at
http://oracle.oreilly.com/.
• If you have the funding, send yourself to all the Oracle developer classes and a couple of
DBA classes, too -- so you can keep your DBA honest. The DBA classes will also help
you when you try to create your own database in your "learning" environment.
Usually when I offer this advice, I get a response such as: "Gee, that sounds like a lot of work."
True, it is a lot of work, but I've been studying Oracle for 16 years and I still don't know all of it.
How else do you expect to make the big bucks?
As far as Java goes, reading Learning Java by Patrick Niemeyer and Jonathan Knudsen
(O'Reilly) is an excellent starting point. O'Reilly has an entire series of books on Java that take
each major area and cover it exhaustively -- for example, Database Programming with JDBC and
Java by George Reese (O'Reilly). George's book covers basics that are not database-specific
while pursuing a more abstract or advanced approach to examining the various ways you can
utilize programming models with JDBC. Check out all the Java series titles at
http://java.oreilly.com/.
If you're into electronic documentation, you can download a copy of the JDBC Java specification
from Sun Microsystems at http://java.sun.com/products/jdbc/. The standard JDBC API
Javadoc can be found in the doc directory of the JDK you install. If you want a complete JDBC
API Javadoc, you can download a copy of Oracle's JDBC Javadoc at the OTN web site.
Oracle8i, Version 8.1.7, and Oracle9i both introduce new features that represent incremental
improvements to Oracle JDBC. We'll discuss the most important of these new features in
Chapter 20. Even though I used Oracle8i, Version 8.1.6 for all the examples in this book,
everything you read still applies to Oracle8i, Release 3, Version 8.1.7 and to Oracle9i.
Most of the filenames in my examples use the Windows path notation using backslashes instead
of forward slashes. I use this notation not out of preference for a particular operating system (my
preference is Unix), but because I feel most of you will be learning how to use Oracle JDBC on a
Win32 platform. So for you Unix/Linux programmers, forgive me for making you reach over the
Enter key.
This book was only half as good as it is now when I first turned my chapters over to my editor
Jonathan Gennick. The other half came from Jonathan's feedback. You can't imagine how
humbling it is to write a chapter of a book, edit yourself several times, send it to your editor, and
then get it returned to you with so many edit marks that it looks like it's the first paper you wrote in
your freshman year of high school. Nonetheless, through the process of editing emerges a work
that is better, better because of the teamwork between writer and editor. Thank you Jonathan!
And thank you also to Matt Hutchinson, production editor for the book, and to the entire O'Reilly
production team.
Also, a special thanks goes out to my technical reviewers: Kuassi Mensah, Java Products Group
Manager, Oracle Corporation; Shiva Prasad, Senior Product Manager, Oracle Corporation;
Ekkehard Rohwedder, SQLJ Development Manager, Oracle Corporation; Alan Beaulieu,
President, APB Solutions, Inc.; and Charles Havranek, President and CEO, xde.net. Your efforts
improved this book and are greatly appreciated!
Part I: Overview
Part I consists of a single chapter that introduces the JDBC API, defines the term
client/server as it will be used in the book, and provides a framework of four
different client types. Each of the four client types, which require a different
treatment when establishing a database connection, will be discussed in detail in
Part II.
The JDBC API is based mainly on a set of interfaces, not classes. It's up to the manufacturer of
the driver to implement the interfaces with their own set of classes. Figure 1-1 is a class
diagram that shows the basic JDBC classes and interfaces; these make up the core API. Notice
that the only concrete class is DriverManager. The rest of the core API is a set of interfaces.
I'll take a second to explain some of the relationships in the diagram. DriverManager is used to
load a JDBC Driver. A Driver is a software vendor's implementation of the JDBC API. After a
driver is loaded, DriverManager is used to get a Connection. In turn, a Connection is used
to create a Statement, or to create and prepare a PreparedStatement or
CallableStatement. Statement and PreparedStatement objects are used to execute
SQL statements. CallableStatement objects are used to execute stored procedures. A
Connection can also be used to get a DatabaseMetaData object describing a database's
functionality.
The six interfaces at the bottom of Figure 1-1 are used with object-relational technology. A
Struct is a weakly typed object that represents a database object as a record. A Ref is a
reference to an object in a database. It can be used to get to a database object. An Array is a
weakly typed object that represents a database collection object as an array. The SQLData
interface is implemented by custom classes you write to represent database objects as Java
objects in your application. SQLInput and SQLOutput are used by the Driver in the creation
of your custom classes during retrieval and storage.
In Oracle's implementation of JDBC, most of the JDBC interfaces are implemented by classes
whose names are prefixed with the word Oracle. Figure 1-2 shows these classes and is laid
out so that the classes correspond positionally with those shown in Figure 1-1.
As you can see from Figure 1-2, the only interface not implemented by an Oracle class is
SQLData. That's because you implement the SQLData interface yourself with custom classes
that you create to mirror database objects. Now that you've got the big picture for the JDBC API,
let's lay a foundation for understanding what I mean when I used the term client with respect to
JDBC.
1.2 Clients
In Part II, we'll examine how to establish JDBC connections from four types of Oracle clients: an
application, an applet, a servlet, and an internal client. But first, I need to define what I mean by
client. Let's begin that discussion by clarifying the term client/server.
It's my opinion that Oracle is in large part responsible for the definition and success of the so-
called client/server platform. From its beginnings, Oracle has been a client/server database.
Here's my definition of client/server:
Any time two different programs run in two separate operating-system processes
in which one program requests services from the other, you have a client/server
relationship.
In the early days, before the use of networks, Oracle applications consisted of the Oracle RDBMS
running on one operating-system process as the server and one or more end users running their
application programs in other operating-system processes. Even though this all took place on one
physical computer, it's still considered client/server. The Oracle RDBMS represents the server,
and the end-user application programs represent the clients.
With the use of networks, the communication between the client and server changed, but the
client/server relationship remained the same. The key difference was that client and server
programs were moved to different computers. Examples of this are the use of C, C++,
VisualBasic, PowerBuilder, and Developer 2000 to develop applications that run on personal
computers and in turn communicate with an Oracle database on a host computer using TCP/IP
via Net8. This type of scenario is what most people think of when they hear the term client/server.
I call this type of client/server architecture two-tier because the division of labor is a factor of two,
not because the client and server programs run on two different computers.
Now, with Java and the Java 2 Enterprise Edition (J2EE), which includes servlets and distributed
objects such as Enterprise JavaBeans (EJB), client/server applications have become
multitiered. Such multitier applications, which can have three, four, or even more tiers, are
referred to as n-tier applications (in which n is more than two tiers). For example, someone using
a browser on a PC can execute a servlet on another host computer. The computer on which the
servlet runs is known as an application server, and it in turn might execute EJB on a third host
computer, which would be known as a component server. The component server might contact
yet another server, a database server running Oracle, to retrieve and store data. In this example,
we have four tiers: personal computer, application server, component server, and database
server. Distributing the software over four computers is one means of scaling up an application to
handle a larger volume of transactions.
With respect to the n-tier application, it's possible to deploy that application so the application
server, component server, and database server are all on the same host computer. In such a
scenario, we would still call it an n-tier application because the division of labor among programs
is a factor greater than two. The key point to note is that while we can run all the server software
on the same host computer, the n-tier architecture allows us to distribute the application over
multiple servers if necessary. Did you notice in these last two examples how a server might also
be a client? The servlet running on the application server was the client to the EJB running on the
component server, and so forth.
Now that you have a better understanding of the term client-sever, let's continue by looking at the
different types of clients that utilize JDBC and Oracle.
Moving on to component technology, EJB is a Java component model for creating enterprise
applications. EJB is a software component that runs in a component server, which is usually
referred to as a Component Transaction Monitor or EJB Container. Like applets and servlets, EJB
has special considerations when it comes to connecting to the database and performing
transactions. Therefore, we'll consider EJB as a fourth type of client.
With the release of Oracle8i, Oracle stored procedures could be written in Java and became a
new type of client. Connectivity for Java stored procedures is very simple. Because EJB and Java
stored procedures are both internal clients, we'll consider both of them as the fourth type, an
internal client. In summary, we have defined four different types of clients that may utilize JDBC:
• Applications
• Applets
• Servlets
• Internal objects
The important point is that each of these client types has a different set of requirements when it
comes to establishing a connection to the database. An application is the easiest type of client to
connect. That's because it has liberal access to operating-system resources; you typically just
make a connection when you start your program and then close it before you exit. An applet, on
the other hand, has to live with security, life cycle, and routing restrictions. A servlet has life cycle
and possible shared connection issues, and an internal client such as EJB or a stored procedure
has security issues.
It's common for programmers to have problems establishing a JDBC connection to an Oracle
database. Consequently, I'll discuss each type of client's requirements separately, and in detail, in
the chapters that follow. This should get you started on the right foot. Chapter 2 covers most of
the general knowledge you'll need, so even if you're interested only in connecting from applets,
servlets, or internally from Java stored procedures, read Chapter 2 first.
I can't emphasize enough how important it is for you to know the SQL language in order to get
the most from using JDBC. If you don't have a lot of experience using SQL, I suggest you read
SQL in a Nutshell, by Kevin Kline with Daniel Kline (O'Reilly)or Oracle: The Complete Reference,
by George Koch and Kevin Loney (Osborne McGraw-Hill).
• Applications
• Applets
• Servlets
• Internal objects
It's a popular notion that drivers implemented using native code are faster than pure Java drivers
because native code is compiled into the native op-code language of the computer, whereas Java
drivers are compiled into byte code. Java drivers have their CPU instructions executed by a Java
Virtual Machine (JVM) that acts as a virtual CPU, which in turn has its commands executed by
the computer's real CPU. On the other hand, the code for native code drivers is executed directly
by the real CPU. Because the JVM represents an additional layer of execution, common sense
would seem to dictate that native code would execute faster. However, as you will see in
Chapter 19, this is not always the case. Most of the time, Oracle's Java driver is faster than its
native driver.
Figure 2-1 shows the JDBC driver architecture on the Win32 platform. On the client side are the
JDBC-ODBC bridge (supplied by Sun, not Oracle), the JDBC OCI driver, and the JDBC Thin
driver. All three communicate with the listener process on the server. The difference in
architecture is in the software layers between the JDBC driver and the listener. As you can see
from Figure 2-1, the JDBC Thin driver communicates directly with the listener. The JDBC OCI
driver, on the other hand, must communicate with the OCI native software, which in turn
communicates with the listener. Even more removed from the listener is the JDBC-ODBC Bridge.
The JDBC-ODBC Bridge driver communicates with an ODBC driver. In turn, the ODBC driver
communicates with OCI native software, which in turn finally communicates with the listener. The
fact that the JDBC Thin driver communicates directly with the listener is probably why it performs
just as well as its native-mode counterpart in most cases.
In order to keep things concise, from now on I'll refer to the JDBC OCI driver as the OCI driver
and the JDBC Thin driver as the Thin driver. Whenever we discuss server-side drivers, I'll qualify
the Thin driver as the server-side Thin driver. Otherwise, we're always talking about client-side
drivers.
LIVRE TROISIÈME.
DU SECOND DUC DE NORMANDIE, GUILLAUME, FILS DE ROLLON.
CHAPITRE PREMIER. Des bonnes qualités du duc Guillaume et de la
jalousie des Francs contre lui, parce qu’il reculait tout autour de lui
les limites de son duché. — Comment il vainquit les comtes bretons
Alain et Béranger, révoltés contre lui. [p. 61]
CHAP. II. Comment quelques Normands, sous la conduite d’un certain
traître nommé Rioulfe, voulurent entreprendre d’expulser le duc du
pays, et étant venus assiéger les faubourgs de la ville de Rouen,
furent vaincus par le duc, qui n’avait avec lui qu’une petite troupe de
chevaliers, dans le lieu que l’on appelle encore aujourd’hui le Pré du
combat; et comment le duc revenant vainqueur après cette affaire,
apprit que Sprota, très-noble jeune fille, lui avait donné un fils, né à
Fécamp, qu’il ordonna de baptiser sous le nom de Richard. [p. 62]
CHAP. III. Comment beaucoup de comtes et de ducs des contrées
étrangères, attirés vers le duc par la renommée de sa bonté et de
ses vertus, visitèrent sa cour, et entre autres Hugues-le-Grand, duc
des Francs, Guillaume, comte de Poitou, et Héribert du Vermandois.
— Comment Guillaume demanda au duc, et en obtint sa sœur Gerloc
en mariage; et comment Héribert, sur les instances de Hugues-le-
Grand, donna sa fille en mariage au duc. [p. 64]
CHAP. IV. Comment, sur la demande d’Elstan, roi des Anglais, le duc
rétablit Louis sur le trône de ses pères, et le décora du diadème
royal après qu’il eut reçu l’onction de l’huile sainte, soutenu qu’il
était par Hugues-le-Grand, par les évêques et par les autres grands
seigneurs Francs. — Comment au bout de cinq ans les Francs
conspirèrent de nouveau contre leur roi, et tentèrent de l’expulser de
son royaume. [p. 65]
CHAP. V. Comment Louis, forcé par la nécessité, voulut conclure un
traité d’amitié avec Henri, roi d’outre-Rhin, et que celui-ci ne voulut y
consentir qu’avec l’intervention de Guillaume, marquis des
Normands. — Par où Louis, ayant supplié instamment le duc, obtint
par lui le secours et l’alliance qu’il recherchait auprès du roi Henri.
[p. 66]
CHAP. VI. Comment à son retour de la conférence des rois, et sur la
demande de Louis, le duc Guillaume présenta sur les fonts du
baptême, à Laon, le fils du roi qui reçut le nom de Lothaire. [p. 67]
CHAP. VII. En quelle occasion le duc Guillaume releva l’abbaye de
Jumiège, que les Païens avaient détruite. [p. 68]
CHAP. VIII. De douze moines et de leur abbé Martin, qui furent pris
dans le couvent de Saint-Cyprien, et que la comtesse de Poitou,
sœur du duc, lui envoya sur sa demande pour être établis dans le
lieu susdit. — Comment le duc voulant se faire moine en ce même
lieu, en reçut défense de l’abbé lui-même; et comment il fit jurer
fidélité à son fils Richard par les Normands et les Bretons. [p. 70]
CHAP. IX. Comment Hérold, roi des Danois, chassé de son royaume
par son fils Suénon, et arrivant en Normandie avec soixante
vaisseaux, fut accueilli par le duc Guillaume avec les honneurs
convenables; et comment ce duc lui concéda le comté de Coutances
pour y demeurer. [p. 72]
CHAP. X. Comment le duc Guillaume, touché des malheurs du comte
Herluin, investit, assiégea et prit le château de Montreuil, qu’Arnoul
de Flandre lui avait enlevé, et le rendit à Herluin. [p. 73]
CHAP. XI. Comment Arnoul, attristé de la perte de ce château, adressa
frauduleusement au duc Guillaume des paroles de paix pour l’inviter
à se rendre à Pecquigny, afin d’y négocier avec lui un traité d’amitié.
[p. 74]
LIVRE QUATRIÈME.
er
DE RICHARD I , FILS DU DUC GUILLAUME.
CHAP. VIII. Comment la reine Gerberge demanda à son père Henri, roi
d’au delà du Rhin, du secours contre les Normands, et n’en obtint
pas; c’est pourquoi elle donna comme otages son fils et deux
évêques, en échange du roi Louis, son époux. [p. 90]
CHAP. IX. Comment les Normands ramenèrent de France leur seigneur
Richard, et rendirent les otages. — Retour du roi Hérold en
Danemarck. [p. 91]
CHAP. X. Comment Hugues-le-Grand fiança sa fille Emma avec le duc
Richard, en sorte que le roi Louis, et Arnoul, comte de Flandre,
effrayés, demandèrent au roi Othon son secours contre Hugues-le-
Grand et le duc Richard; et comment Othon, après avoir dévasté le
territoire de Hugues-le-Grand, entreprit d’assiéger Rouen. [p. 92]
CHAP. XI. Comment l’empereur Othon, le roi Louis et Arnoul de
Flandre, abandonnèrent honteusement le siége de Rouen, et prirent
la fuite. — Mort du roi Louis, qui eut pour successeur Lothaire, son
fils. [p. 94]
CHAP. XII. Comment Hugues-le-Grand, sur le point de mourir, plaça
son fils Hugues sous la protection du duc Richard; et comment ce
même duc prit pour femme Emma, fille de Hugues, après la mort de
celui-ci. [p. 96]
CHAP. XIII. Quels conseils Thibaut, comte de Chartres, donna à la reine
Gerberge contre le duc Richard; et comment ces artifices furent
révélés au duc par deux chevaliers de Thibaut même. [p. 96]
CHAP. XIV. Comment le roi Lothaire ayant réuni les ennemis du duc
Richard, savoir, Baudouin, comte de Flandre, Geoffroi d’Anjou et
Thibaut de Chartres, voulut encore le tromper, mais il ne le put.
[p. 98]
LIVRE CINQUIÈME.
er
DU DUC RICHARD II, FILS DE RICHARD I .
LIVRE SIXIÈME.
DE RICHARD III ET DE ROBERT SON FRÈRE, TOUS DEUX FILS DE RICHARD II.
LIVRE SEPTIÈME.
DU DUC GUILLAUME, QUI SOUMIT L’ANGLETERRE PAR SES ARMES.
LIVRE HUITIÈME.
er
DE HENRI I , ROI DES ANGLAIS ET DUC DES NORMANDS.
CHAP. VIII. De la valeur que Guillaume déploya pour les intérêts de son
royaume; et comment il persécuta l’église de Dieu et ses serviteurs.
[p. 252]
GUILLAUME DE POITIERS.
NOTICE sur Guillaume de Poitiers. [p. 321]
Updated editions will replace the previous one—the old editions will
be renamed.
1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside the
United States, check the laws of your country in addition to the
terms of this agreement before downloading, copying, displaying,
performing, distributing or creating derivative works based on this
work or any other Project Gutenberg™ work. The Foundation makes
no representations concerning the copyright status of any work in
any country other than the United States.
1.E.6. You may convert to and distribute this work in any binary,
compressed, marked up, nonproprietary or proprietary form,
including any word processing or hypertext form. However, if you
provide access to or distribute copies of a Project Gutenberg™ work
in a format other than “Plain Vanilla ASCII” or other format used in
the official version posted on the official Project Gutenberg™ website
(www.gutenberg.org), you must, at no additional cost, fee or
expense to the user, provide a copy, a means of exporting a copy, or
a means of obtaining a copy upon request, of the work in its original
“Plain Vanilla ASCII” or other form. Any alternate format must
include the full Project Gutenberg™ License as specified in
paragraph 1.E.1.
• You pay a royalty fee of 20% of the gross profits you derive
from the use of Project Gutenberg™ works calculated using the
method you already use to calculate your applicable taxes. The
fee is owed to the owner of the Project Gutenberg™ trademark,
but he has agreed to donate royalties under this paragraph to
the Project Gutenberg Literary Archive Foundation. Royalty
payments must be paid within 60 days following each date on
which you prepare (or are legally required to prepare) your
periodic tax returns. Royalty payments should be clearly marked
as such and sent to the Project Gutenberg Literary Archive
Foundation at the address specified in Section 4, “Information
about donations to the Project Gutenberg Literary Archive
Foundation.”
• You comply with all other terms of this agreement for free
distribution of Project Gutenberg™ works.
1.F.
1.F.4. Except for the limited right of replacement or refund set forth
in paragraph 1.F.3, this work is provided to you ‘AS-IS’, WITH NO
OTHER WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR ANY PURPOSE.
Please check the Project Gutenberg web pages for current donation
methods and addresses. Donations are accepted in a number of
other ways including checks, online payments and credit card
donations. To donate, please visit: www.gutenberg.org/donate.
Most people start at our website which has the main PG search
facility: www.gutenberg.org.
Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.
ebookname.com