📄 postgresql.html
字号:
<html><head><meta name="KEYWORDS" content=" library, C++, PostgreSQL,
SQL, server, client, database, programming, development, software,
Win32, Windows, Linux, Unix, Solaris,
Microsoft, Borland, Centura, Gupta, IBM"><meta name="DESCRIPTION" content=
"SQLAPI++ is C++ library for accessing SQL databases (Oracle, SQLServer, Sybase, DB2, InterBase, SQLBase, Informix, MySQL, PostgreSQL, ODBC).
It uses native APIs, provides low-level access to database-specific features."><title>SQLAPI++ Library - Server Specific Guide - PostgreSQL</title></head><body bgcolor="#ffffff" BACKGROUND="../images/bg.gif" text="#000000"><!--class="GlbHdr"-->
<table WIDTH=600 height=40
frame=hsides BORDER="2" BORDERCOLOR="#004fcd" align="right" cellpadding="0" cellspacing="2" id="TABLE1">
<tr><!--class="GlbDefault"-->
<td width=70 bgcolor=#000094 bordercolor=black align=middle>
<A href="../index.html" style="TEXT-DECORATION: none" >
<font color=white size=3 face=sans-serif>
<b>Home</b></font></A></td></TD>
<td width=70 bgcolor=#000094 bordercolor=black align=middle>
<A href="../HowTo/index.html" style="TEXT-DECORATION: none" >
<font color=white size=3
face=sans-serif>
<b>How To</b></font></A></td><!--class="GlbActive"-->
<td width=70 bgcolor=#00bb00 bordercolor=black align=middle>
<A href="../OnLineDoc/index.html" style="TEXT-DECORATION: none" >
<font color=white size=3
face=sans-serif>
<b>Online Documentation</b></font></A></td><!--class="GlbDefault"-->
<td width=70 bgcolor=#000094 bordercolor=black align=middle>
<A href="../Support/index.html" style="TEXT-DECORATION: none" >
<font color=white size=3
face=sans-serif>
<b>Support</b></font></A></td>
<td width=70 bgcolor=#000094 bordercolor=black align=middle>
<A href="../Download/index.html" style="TEXT-DECORATION: none" >
<font color=white size=3
face=sans-serif>
<b>Download</b></font></A></td>
<td width=70 bgcolor=#000094 bordercolor=black align=middle>
<A href="../Order/index.html" style="TEXT-DECORATION: none" >
<font color=white size=3
face=sans-serif>
<b>Order</b></font></A></td>
</tr>
</table>
<p> </p>
<table width="100%">
<tr>
<td valign=top width=165><!--class="LeftMenu"-->
<table frame=void CELLSPACING=5 width=165>
<tr>
<td><p><br></p></td>
</tr>
<tr>
<td><img align=middle src="../images/green.gif" WIDTH="12" HEIGHT="12">
<A href="../OnLineDoc/Command.html" style ="TEXT-DECORATION: none" >
<font color=white size=2 face=sans-serif>
SACommand</A> </FONT> </td>
</tr>
<tr>
<td><img align=middle src="../images/green.gif" WIDTH="12" HEIGHT="12">
<A href="../OnLineDoc/Connection.html" style ="TEXT-DECORATION: none" >
<font color=white size=2 face=sans-serif>
SAConnection</A> </FONT> </td>
</tr>
<tr>
<td><img align=middle src="../images/green.gif" WIDTH="12" HEIGHT="12">
<A href="../OnLineDoc/Exception.html" style ="TEXT-DECORATION: none" >
<font color=white size=2 face=sans-serif>
SAException</font></A> </td>
</tr>
<tr>
<td><img align=middle src="../images/green.gif" WIDTH="12" HEIGHT="12">
<A href="../OnLineDoc/Field.html" style ="TEXT-DECORATION: none" >
<font color=white size=2 face=sans-serif>
SAField</A> </FONT> </td>
</tr>
<tr>
<td><img align=middle src="../images/green.gif" WIDTH="12" HEIGHT="12">
<A href="../OnLineDoc/Param.html" style ="TEXT-DECORATION: none" >
<font color=white size=2 face=sans-serif>
SAParam</A> </FONT> </td>
</tr>
<tr><td><hr></td></tr>
<tr>
<td><img align=middle src="../images/green.gif" WIDTH="12" HEIGHT="12">
<A href="../OnLineDoc/String.html" style ="TEXT-DECORATION: none" >
<font color=white size=2 face=sans-serif>
SAString</A> </FONT> </td>
</tr>
<tr>
<td><img align=middle src="../images/green.gif" WIDTH="12" HEIGHT="12">
<A href="../OnLineDoc/DateTime.html" style ="TEXT-DECORATION: none" >
<font color=white size=2 face=sans-serif>
SADateTime</A> </FONT> </td>
</tr>
</table>
</td><!--empty column-->
<td width=20>
<p> </p>
</td><!--Content-->
<td valign=top align=left>
<center>
<H2><A href="index.html">Server Specific Guide</A></H2>
<h1>PostgreSQL</h1>
<P align=left>SQLAPI++ allows to work with a number of SQL database
servers. It provides common mechanisms to access database, and as a
general rule they work for any database server. But each server has
some specific features which developer has to know to use all
server's capability and avoid potential errors.</P>
<P align=left>This page collects all <STRONG>specific</STRONG> information that concerns
working with <STRONG>PostgreSQL</STRONG>
server using SQLAPI++
Library. Full information about using SQLAPI++ see in <A
href="../HowTo/index.html">How To</A>
and <A
href="../OnLineDoc/index.html">Online Documentation</A>.
</P>
<P align=left>Available topics:
</P>
</center>
<P><A
href="PostgreSQL.html#Connecting to a database">Connecting to a
database</A></P>
<P><A
href="PostgreSQL.html#Transaction isolation levels">Transaction
isolation levels</A></P>
<P><A
href="PostgreSQL.html#Working with Long or Lob(CLob, BLob) data">Working with
Long or Lob(CLob, BLob) data</A></P>
<P><A
href="PostgreSQL.html#Returning output parameters">Returning output parameters</A></P>
<P><A
href="PostgreSQL.html#Cancelling queries">Cancelling queries</A></P>
<P><A
href="PostgreSQL.html#Connection and command options">Connection and
command options</A></P>
<P><A
href="PostgreSQL.html#Getting native PostgreSQL API"> Getting native PostgreSQL API</A></P>
<P><A
href="PostgreSQL.html#Getting native PostgreSQL connection related handles"> Getting native PostgreSQL connection related
handles</A></P>
<P><A
href="PostgreSQL.html#Getting native PostgreSQL command related handles"> Getting native PostgreSQL command related
handles</A></P>
<P><A href="PostgreSQL.html#Error handling">Error
handling</A></P>
<P><A href="PostgreSQL.html#Special header files - Compile time">Special header files - Compile time</A></P>
<P> </P>
<H3><A
name="Connecting to a database">Connecting to a database</A> </H3>
<p>To connect to a database you should create a
connection object and then connect it. A connection object is
represented by <A href="../OnLineDoc/Connection.html" >SAConnection</A>
class. After the connection is created you need to connect it to
<STRONG>PostgreSQL</STRONG>
server using <A href="../OnLineDoc/Connection_Connect.html" >SAConnection::Connect</A>
method</p>
<p><font face=Arial><b
>void Connect( const SAString
&</b>sDBString<b>, const SAString
&</b>sUserID<b>, const SAString
&</b>sPassword<b>, SAClient_t</b>
eSAClient<b> =
SA_Client_NotSpecified );</b><b
> <BR></b></font></p>
<p>with the following parameters:</p>
<P><EM>sDBString.</EM> One of the following
formats:</P>
<UL>
<LI><STRONG>"" or "@"</STRONG> - empty
string or '@' character, connects to a local server.
<LI>
<STRONG><database name> or @
<STRONG><database name></STRONG></STRONG> - connects to
a database with the specified name on local server.<LI>
<STRONG><server name>@</STRONG> - connects to the specified
server.<LI><STRONG><server
name>@<database name>
</STRONG>- connects to a database
with the specified name on the specified server.</LI></UL>
<P><EM>sUserID.</EM> A string containing a user name
to use when establishing the connection.<BR><EM>sPassword.</EM> A string containing a
password to use when establishing the connection.<BR><EM>eSAClient.</EM> Optional. One of the
following values from <STRONG>SAClient_t</STRONG> enum:
<UL>
<LI><STRONG>SA_PostgreSQL_Client</STRONG>
PostgreSQL client.
<LI><STRONG>SA_Client_NotSpecified</STRONG>
Used by default if <EM>eSAClient</EM>parameter is
omitted. You can use this default value only if you have
call <A
href="../OnLineDoc/Connection_setClient.html">SAConnection::setClient</A>
method with <STRONG>SA_PostgreSQL_Client</STRONG>
constant before.</LI>
</UL>
<P> The SQLAPI++ Library requires libpq
version 7.1.x or higher.</P>
<P>For more details see <A
href="../HowTo/connect.html">How To - Connecting to databases</A>, <A
href="../OnLineDoc/Connection_Usage.html">SAConnection object</A>, <A
href="../OnLineDoc/Connection_Connect.html">SAConnection::Connect</A>.</P>
<P> </P>
<H3><A
name="Transaction isolation levels">Transaction isolation
levels</A> </H3>
<P >
SQL-92 defines four isolation levels, all of
which are supported by SQLAPI++:</P>
<UL>
<LI >
Read uncommitted (the lowest level where
transactions are isolated just enough to ensure that physically
corrupt data is not read)
<LI >
Read committed
<LI>Repeatable read<LI>Serializable (the highest level, where
transactions are completely isolated from one another) </LI></UL><P>SQLAPI++ maps different isolation levels on
<STRONG>
PostgreSQL</STRONG> server in the following way:</P>
<P>
<STRONG
>SA_ReadUncommitted</STRONG> =
'READ COMMITTED'<BR><STRONG >
SA_ReadCommitted</STRONG> =
'READ COMMITTED' <BR
><STRONG
>
SA_RepeatableRead</STRONG> =
'READ COMMITTED'<BR>
<STRONG> SA_Serializable</STRONG> =
'SERIALIZABLE'</P>
<P>For more details see<A href="../OnLineDoc/Connection_setIsolationLevel.html" >
SAConnection::setIsolationLevel</A>. </P>
<P> </P>
<H3><A
name="Working with Long or Lob(CLob, BLob) data">Working with Long or Lob(CLob,
BLob) data</A> </H3>
<P>
SQLAPI++ supports four types for working with
Long or Lob(CLob, BLob) data:</P>
<P>
<TABLE border=1 cellPadding=1 cellSpacing=1 style="WIDTH: 100%"
width=100%>
<TR bgColor=navy>
<TD><FONT color=white
style="BACKGROUND-COLOR: #000080">Name</FONT></TD>
<TD><FONT color=white
style="BACKGROUND-COLOR: #000080">C
enum constant</FONT></TD>
</TR>
<TR>
<TD>LongBinary</TD>
<TD>SA_dtLongBinary</TD>
</TR>
<TR>
<TD>LongChar</TD>
<TD>SA_dtLongChar</TD>
</TR>
<TR>
<TD>BLob (Binary Large object)</TD>
<TD>SA_dtBLob</TD>
</TR>
<TR>
<TD>CLob (Character Large object)</TD>
<TD>SA_dtCLob</TD>
</TR></TABLE></P>
<P>The table below shows how SQLAPI++ data
types correspond with servers original data types:</P>
<P><EM>SA_dtLongBinary</EM>
<= > BYTEA<BR><EM>SA_dtLongChar</EM> <= > TEXT<BR
><EM>SA_dtBLob</EM> < = > Large
Object<BR><EM>SA_dtCLob <
</EM>=> Large Object</EM></P>
<P>
Working with PostgreSQL Large Objects data
(Oid field type) in <STRONG>PostgreSQL</STRONG> server has some
particular features. Generally when you fetch Oid field data (which
can point to any object, not necessary PostgreSQL Large Object)
SQLAPI++ returns its value as a number (SQLAPI++ returns an object
identifier). If you want to retrieve Oid field as PostgreSQL Large
Object you should set command-related option
<STRONG>OidTypeInterpretation</STRONG> to
<EM>"LargeObject"</EM>value before the command execution.
See <A
href="../OnLineDoc/Command_setOption.html">SACommand::setOption</A>
for more detailes.</P>
<P>
For more details see <A href="../HowTo/blobs.html">How To - Working with Long or Lob(CLob, BLob) data</A></P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -