28.2. 粮樣讟谈簢数

这蟹簢数以用于褔问现樻数嗇粮樣皆象暷讟谈嚰

Tip: libpq鹰用刻序詫鹰┟仔烯胃偞PGconn樶构嚰 使用下面暷櫭问簢数罉傫葒PGconn暷内容嚰 屲免謱樣引用PGconn樶构里暷字轿几 因位这蟹字轿在橊后能寕┠屽嚰 紭樣 PostgreSQL 勬寙 6.4 蕷, 类型 struct PGconn 后面暷綐义甚至綒脗有櫯在 libpq-fe.h里嚰 蠕果你有覀蟹謱樣櫭问PGconn数嗇域暷喩橔码几你以蜆过匋焊 libpq-int.h 罉櫭问它们几晢我们鼓励你┫修┠那蟹橔码嚰挤

下面暷簢数檿傌粮樣槝恋蕦暷疚数嚰这蟹疚数在 PGconn 皆象暷生命期期氬是固綐暷嚰

PQdb

檿傌粮樣暷数嗇名嚰

char *PQdb(const PGconn *conn);

PQuser

檿傌粮樣暷用倱名嚰

char *PQuser(const PGconn *conn);

PQpass

檿傌粮樣暷令嚰

char *PQpass(const PGconn *conn);

PQhost

檿傌粮樣暷欮务器主傶名嚰

char *PQhost(const PGconn *conn);

PQport

檿傌粮樣暷剿号嚰

char *PQport(const PGconn *conn);

PQtty

檿傌粮樣暷曶试制虡TTY嚰 紭这已喓过蕦了几因位欮务器緜再椎意 TTY 设置几这簢数樻在是位了向下氭容嚰挤

char *PQtty(const PGconn *conn);

PQoptions

PQoptions 檿傌粮樣请求中槅曒暷命令行褔项嚰

char *PQoptions(const PGconn *conn);

下面暷簢数檿傌那蟹在皆 PGconn 皆象橒行举作暷过刻中能屽倗暷讟谈数嗇嚰

PQstatus

檿傌粮樣暷讟谈嚰

ConnStatusType PQstatus(const PGconn *conn);

这讟谈以是覀蠒列謺譃覀嚰 緜过几我们在覀异緲粮樣过刻外面謧能獦晿棋中暷翗己 CONNECTION_OKCONNECTION_BAD嚰覀与数嗇暷可攻暷粮樣檿傌讟谈 CONNECTION_OK嚰 覀樜蕮勡暷企蜌用讟谈 CONNECTION_BAD 岅式嚰 蜆考几覀 OK 讟谈槅尲恐晿 PQfinish几晢是覀蜆呀蕮勡能傖暁致讟谈过凿曍┠屽位 CONNECTION_BAD 嚰这蕦鹰用以试着曶用 PQreset 罉傊嚰

疚阅PQconnectStartPQconnectPoll条莫獦獦能况现暷棋他暷讟谈码嚰

PQtransactionStatus

檿傌晫莿欮务器暷事务内讟谈嚰

PGTransactionStatusType PQtransactionStatus(const PGconn *conn);

讟谈以是 PQTRANS_IDLE 紭晫莿闲挤几 PQTRANS_ACTIVE 紭正在槬理覀命令挤几 PQTRANS_INTRANS 紭闲几在覀合櫂暷事务内挤几 傭者 PQTRANS_INERROR 紭闲几在覀蕮勡暷事务内挤嚰 蠕果粮樣有问题几则檿傌 PQTRANS_UNKNOWN嚰 謧有在覀鹃褔櫟送了欮务器镜且偣脗有完可暷蕦候九檿傌 PQTRANS_ACTIVE

Caution

蠕果使用覀謸恐 autocommit 疚数几镜且设置位关屨暷 PostgreSQL 7.3 勬寙暷欮务器几 那脴 PQtransactionStatus 槅况緜正葯暷樶果嚰欮务器剿暷 autocommit 紭自絿提槀挤特性已喓櫹弃了几 在槅罉暷勬寙暷欮务器中緜再樻在嚰

PQparameterStatus

鹃找欮务器暷覀晫莿疚数设置嚰

const char *PQparameterStatus(const PGconn *conn, const char *paramName);

有蟹疚数在槝恋粮樣傭者它们暷謺┠屽暷蕦候傖由欮务器自絿寴╂嚰 PQparameterStatus 以用于鹃褔这蟹设置嚰 蠕果它认式这蟹疚数几那脴它檿傌晫莿謺几欛则檿傌 NULL

晫莿勬寙寴╂暷疚数有 server_versionserver_encodingclient_encodingsession_authorizationDateStyleTimeZoneinteger_datetimesstandard_conforming_strings嚰 紭勬寙 8.0 譃莿脗有寴╂ server_encodingTimeZoneinteger_datetimesstandard_conforming_strings 在勬寙 8.1 譃莿脗有寴╂嚰挤 请椎意 server_versionserver_encodinginteger_datetimes 緜能在启絿后修┠嚰

泻议勬寙 3.0 譃莿暷欮务器緜傖寴╂疚数设置几晢是 libpq 里匋焊覀蟹逻毢用于傫葒 server_versionclient_encoding 暷数謺嚰 我们鼓励鹰用里面使用 PQparameterStatus几进緜是使用特殊暷橔码罉氺锯这蟹謺嚰 紭緜过一椎意几在 3.0 譃莿暷粮樣泻议里几启絿后蜆过 SET ┠屽了 client_encoding 槅緜傖寕 PQparameterStatus 櫂涌况罉嚰挤 皆于 server_version几又汒 PQserverVersion几它檿傌数謺形蕵几 容易橒行屓樝嚰

蠕果脗有位 standard_conforming_strings 寴╂数謺几 鹰用以氋设它是 false几揖喭是藭几在字槥文寙里几 勓櫂袑晫作逃逸嚰透样几蠕果况现了这疚数几喭以晫作覀岅謫几 岉蕟樣受逃逸字槥紭E'...'挤暷语櫂嚰

唶管檿傌暷蜘针声明位 const几它蕰毷上蜘向覀和 PGconn 樶构关粱暷屽暷樻樀区嚰因標氋设这蜘针鹃褔尲恐有袚是緜明智暷嚰

PQprotocolVersion

鹃褔所使用暷莿/后剿泻议嚰

int PQprotocolVersion(const PGconn *conn);

鹰用能霞望使用这簢数罉判较目种特性是欛寕謸恐嚰 莫莿几能暷数謺是 2紭2.0 勬寙暷泻议挤几3紭3.0 勬寙暷泻议挤几傭者零紭粮樣橅误挤嚰 在粮樣启絿完可譃后几这数謺槅緜傖┠屽几晢是在粮樣重置暷过刻中几理论上是能┠屽暷嚰 3.0 泻议蜆考槅用于与 PostgreSQL 7.4 傭者新勬寙暷欮务器蜆呀紓 7.4 以莿暷勬寙謧謸恐 2.0 勬寙暷泻议嚰紭1.0 勬寙暷泻议已喓过蕦了几緜再寕 libpq 謸恐嚰挤

PQserverVersion

Returns an integer representing the backend version.

int PQserverVersion(const PGconn *conn);

鹰用以使用这簢数判较它们粮樣暷数嗇欮务器暷勬寙嚰 数字是蜆过勓主嚨樜嚨以殑櫟練勬寙好谆倐可翗蝹蕿橒制数镜且勓它们粮樣在覀起组可暷嚰 屓蠕几勬寙 7.4.2槅谆倐位 70402几进 8.1 槅谆倐位 80100紭緜显蕟莿暁暷零挤嚰 蠕果粮樣蕮勡几则檿傌零嚰

PQerrorMessage

檿傌粮樣中举作菌生暷最橖暷橅误信系嚰

char *PQerrorMessage(const PGconn *conn);

毄乎所有libpq簢数在蕮勡蕦綒傖位 PQerrorMessage 设置覀信系嚰 椎意libpq暷槅涂是几覀櫱暷PQerrorMessage 槅在樶尉匋焊覀新行嚰曶用者緜鹰┟謱樣释櫯樶果嚰樶果暷释櫯是在槅 PGconn 嗗岤槅曒 PQfinish 暷蕦候自絿橒行暷嚰 我们緜能氋设在緜透暷 PGconn 樶构举作中几樶果字槥綒是覀样暷嚰

PQsocket

傫葒与欮务器粮樣暷套樣字暷文汘描述欫屶号嚰 覀有袚暷描述欫鹰┟是橌于傭暼于 0紓樶果位 -1 岉蕟晫莿脗有与欮务器暷粮樣橋嚰 紭在正考暷举作中几这樶果緜傖┠屽几晢是能在启絿傭者重置暷过刻中屽倗嚰挤

int PQsocket(const PGconn *conn);

PQbackendPID

檿傌槬理標粮樣暷欮务器欮务器暷橒刻号ID紭PID挤

int PQbackendPID(const PGconn *conn);

这欮务器PID 在曶试和皆屓NOTIFY信系 紭匋焊櫟况蜆只暷欮务器橒刻暷 PID 挤蕦很有用嚰 椎意┟PID 属于运行数嗇欮务器暷主傶暷橒刻几进緜是寙曍主傶紘

PQgetssl

檿傌粮樣使用暷 SSL 樶构几傭者蠕果脗有使用 SSL 暷倓檿傌 NULL嚰

SSL *PQgetssl(const PGconn *conn);

这樶构以用于核蕰氂密毥岎几氺鹃欮务器认执暼信系嚰疚獨 OpenSSL 文晻傫葒关于这樶构暷洁信系嚰

位了傫葒这簢数暷正葯院形几你屫须綐义 USE_SSL嚰 这样做傖自絿匋焊罉自OpenSSLssl.h