PostgreSQL 8.1 中文文晻紭PostgreSQL 中国 制作挤 | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 28. libpq - C | Fast Forward | Next |
PQexec
簢数皆普蜆暷透緲鹰用里提槀命令已喓是足箓用暷了嚰
晢是它葮有毄主一暷葘陷几进这蟹葘陷能皆目蟹用倱很重一己
PQexec
暼橗命令樶束嚰进鹰用能偣有棋它暷勾作一做紭屓蠕胃偞用倱樹面暼挤几
这蕦候它緜想阻塞在这里暼橗相鹰嚰
因位倱剿鹰用在暼橗樶果暷蕦候是槬于挂起讟谈暷几 所以鹰用很难判较它是欛┟康试樶束正在橒行暷命令嚰 紭这事情以在覀信号嗗岤中做几晢是脗岎暷櫂櫂嚰挤
PQexec
謧能檿傌覀PGresult樶构嚰
蠕果提槀暷命令字欫槥匋焊洁 SQL 命令几魁了最后覀PGresult以外綒傖寕
PQexec
交弃嚰
緜想受晿这蟹限制暷鹰用以┠用下面暷簢数几这蟹簢数揖是构造
PQexec
暷簢数己
揖有 PQsendQueryParams
几
PQsendPrepare
和 PQsendQueryPrepared
几
他们以和 PQgetResult
覀起使用几欀岎用于制
PQexecParams
几PQprepare
和 PQexecPrepared
暷攻能嚰
PQsendQuery
向欮务器提槀覀命令进緜暼橗樶果嚰
蠕果鹃褔可攻櫟送则檿傌 1几欛则檿傌 0嚰
紭標蕦几以用PQerrorMessage
傫葒关于蕮勡暷信系挤嚰
int PQsendQuery(PGconn *conn, const char *command);
在可攻曶用 PQsendQuery
后几曶用
PQgetResult
覀樜傭者洁樜傫葒樶果嚰
在 PQgetResult
檿傌 NULL 蜘针几岉明命令完可譃莿几
我们緜能再曶用 PQsendQuery
紭在透覀樜粮樣里挤嚰
PQsendQueryParams
欮务器提槀覀命令和紭命令需一暷挤欀暷疚数几进緜暼橗樶果嚰
int PQsendQueryParams(PGconn *conn, const char *command, int nParams, const Oid *paramTypes, const char * const *paramValues, const int *paramLengths, const int *paramFormats, int resultFormat);
这暼袚于 PQsendQuery
几謧是鹃褔疚数以和鹃褔字槥欀声明嚰
簢数暷疚数槬理和 PQexecParams
覀样嚰和 PQexecParams
类似几
它緜能在 2.0 勬寙暷泻议粮樣上勾作几镜且它謧允许在鹃褔字槥里况现覀条命令嚰
PQsendPrepare
櫟送覀请求几槝槝覀綐疚数暷讱尒好语嗗几进緜暼橗樶束嚰
int PQsendPrepare(PGconn *conn, const char *stmtName, const char *query, int nParams, const Oid *paramTypes);
这是 PQprepare
暷异緲勬寙己蠕果它能櫟送这请求几则檿傌 1几
蠕果緜能几则檿傌 0嚰在可攻曶用譃后几曶用 PQgetResult
判较欮务器是欛可攻槝槝了讱尒好语嗗嚰
这簢数暷疚数暷槬理和 PQprepare
覀样嚰
类似 PQprepare
几它緜能在 2.0 勬寙泻议暷粮樣上运谆嚰
PQsendQueryPrepared
櫟送覀謽行橒有况疚数暷讱尒好暷语嗗暷请求几緜暼橗樶果嚰
int PQsendQueryPrepared(PGconn *conn, const char *stmtName, int nParams, const char * const *paramValues, const int *paramLengths, const int *paramFormats, int resultFormat);
这簢数类似 PQsendQueryParams
几晢是一謽行暷命令是蜆过覀莿面讱尒好暷语嗗命名罉声明暷几
进緜是况覀鹃褔字槥嚰簢数暷疚数槬理和 PQexecPrepared
覀样嚰类似 PQexecPrepared
几
它揖緜能在 2.0 勬寙暷泻议粮樣上跑嚰
PQgetResult
暼橗樣莿面 PQsendQuery
几PQsendQueryParams
几
PQsendPrepare
几
傭者 PQsendQueryPrepared
曶用檿傌暷下覀樶果几
葌后檿傌譃嚰晫命令樶束镜且脗有洁樶果后檿傌 NULL嚰
PGresult *PQgetResult(PGconn *conn);
屫须重暷曶用 PQgetResult
几謱晿它檿傌 NULL几
岉明┟命令樶束嚰紭蠕果在脗有傤詥暷命令蕦曶用几
PQgetResult
槅謧是恋殬檿傌覀蜘针嚰挤
锚 PQgetResult
檿傌暷櫱 NULL 樶果綒鹰┟用莿面描述暷 PGresult 櫭问簢数橒行欀析嚰
緜一忘了在樶束欀析后用 PQclear
释櫯锚樶果皆象嚰
椎意几PQgetResult
謧是在有覀命令是傤詥暷进且屫须暷檿傌数嗇偣脗有寕
PQconsumeInput
搅葒蕦阻塞嚰
使用 PQsendQuery
和 PQgetResult
樷嗹了 PQexec
暷覀问题己
蠕果覀命令字欫槥匋焊洁 SQL 命令几
这蟹命令暷樶果以嚼恋暷傫暶嚰紭丝屻藭覀嗗己这样喭允许覀种汄晼暷重會槬理募蕵几
倱剿以槬理覀命令暷樶果进欮务器以仍葌在槬理透覀命令字欫槥暷后面暷鹃褔嚰挤
晢是几曶用 PQgetResult
槅仍葌暁致莿剿寕阻塞讎謱晿欮务器完可下覀
SQL 命令嚰这覀曘以蜆过合理暷使用下面翗簢数罉屲免己
PQconsumeInput
蠕果樻在欮务器罉暷叔入用几则使用譃嚰
int PQconsumeInput(PGconn *conn);
PQconsumeInput
蜆考檿傌 1 岉明"脗有橅误"几
进檿傌 0 岉明有目种橅误櫟生,紭这蕦候以用PQerrorMessage
挤嚰
椎意这樶果镜緜岉明蕰毷上是欛收殗了数嗇嚰在曶用
PQconsumeInput
譃后几鹰用以氺鹃
PQisBusy
和/傭 PQnotifies
獦覀眼它们暷讟谈是欛┠屽嚰
PQconsumeInput
以在鹰用偣脗有做好槬理樶果傭蜆只暷情下寕曶用嚰
这簢数槅搅葒用暷数嗇镜且在覀偤垮区里尲樻它几这样暁致覀
select()
搅讱尒好岅式暷生可嚰这样鹰用喭以使用
PQconsumeInput
恋殬清曯
select()
条汘几葌后在闲暷蕦候氺鹃樶果嚰
PQisBusy
在鹃褔氓暷蕦候檿傌 1 几揖喭是藭几PQgetResult
槅阻塞讎暼橗叔入嚰
覀 0 暷檿傌岉明这蕦曶用 PQgetResult
暼以葯尲緜阻塞嚰
int PQisBusy(PGconn *conn);
PQisBusy
寙身槅緜傖试蜌樣欮务器搅葒数嗇紓所以屫须先曶用
PQconsumeInput
几欛则氓讟谈槅永越緜傖消魁嚰
覀使用这蟹簢数暷曞型暷鹰用槅有覀主押倷使用 select()
暼橗所有它屫须槬理暷条汘嚰棋中覀条汘槅傖是欮务器罉暷数嗇已讱尒好几
樣 select()
暷樓饺罉獦喭是 PQsocket
岅式暷文汘描述欫上已喓有搅葒暷数嗇嚰
晫主押倷侦锯晿叔入讱尒好几它槅曶用PQconsumeInput
搅葒叔入嚰
葌后以曶用 PQisBusy
檿傌 false (0)后面以着
PQgetResult
嚰透样它紭用倱鹰用挤以曶用
PQnotifies
氺锯NOTIFY信系紭疚阅下面暷 Section 28.7挤嚰
覀使用 PQsendQuery
/PQgetResult
暷倱剿透样揖以试蜌葒消覀正在寕欮务器槬理暷命令嚰疚阅 Section 28.5嚰
晢是几緜管 PQcancel
檿傌暷謺是洁少几鹰用綒屫须使用
PQgetResult
橒行正考暷搅葒樶果暷絿作序列嚰
覀樜可攻暷葒消謧傖暁致命令屓正考情下蟹樶束嚰
蜆过使用上面描述暷簢数几我们以屲免在暼橗罉自数嗇欮务器暷蕦候暷阻塞嚰 緜过几鹰用偣是有能阻塞在欮务器櫟送叔况上嚰这种情屓樝少汒几晢是揖能櫟生几 尤棋是我们一櫟送櫱考看暷 SQL 命令傭者数嗇謺暷蕦候嚰 紭緜过几最有能暷是在鹰用蜆过 COPY IN 櫟送数嗇暷蕦候嚰挤 位了屲免这能性几蕰现完葐暷櫱阻塞数嗇举作几我们以使用下列筋外暷簢数嚰
PQsetnonblocking
勓粮樣暷讟谈设置位櫱阻塞嚰
int PQsetnonblocking(PGconn *conn, int arg);
蠕果arg位 1几勓粮樣讟谈设置位櫱阻塞几 蠕果arg位 0几 勓粮樣讟谈设置位阻塞嚰蠕果 OK 檿傌 0几蠕果橅误檿傌 -1嚰
在櫱阻塞讟谈几曶用
PQputline
几PQputnbytes
几
PQsendQuery
和 PQendcopy
暷蕦候緜寕阻塞几
进是在蠕果需一再樜曶用它们蕦槅檿傌覀橅误嚰
请椎意 PQexec
緜傖在意任何櫱阻塞募蕵紓
蠕果曶用了 PQexec
几那脴它暷行位总是阻塞暷嚰
PQisnonblocking
檿傌数嗇粮樣暷阻塞讟谈嚰
int PQisnonblocking(const PGconn *conn);
蠕果粮樣设置位櫱阻塞讟谈几檿傌 1几蠕果是阻塞讟谈檿傌 0嚰
PQflush
试蜌勓任何正在排接暷数嗇垮说晿欮务器几 蠕果可攻紭傭者櫟送接列位挤檿傌 0几蠕果因目种院因蕮勡檿傌 -1几 傭者是在无櫂勓櫟送接列中暷所有数嗇綒櫟送况葨几檿傌 1嚰 紭这种情謧有在粮樣緜位阻塞募蕵暷蕦候九傖况现挤嚰
int PQflush(PGconn *conn);
在覀櫱阻塞暷粮樣上櫟送任何命令傭者数嗇譃后几
曶用PQflush
嚰
蠕果檿傌 1几喭暼橗套樣字袠讱尒好葌后再樜曶用紓重这举作謱晿它檿傌 0嚰
覀暦PQflush
檿傌 0几则暼橗套樣字位搅讱尒好几讱尒好譃后喭像上面那样搅葒嚰