Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản cách đọc kèo bóng đá được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
Tài liệu này dành cho phiên bản cách đọc kèo bóng đá được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

cách đọc kèo bóng đá11064_11105

ThePQEXECHàm là đủ Để gửi các cách đọc kèo bóng đá trong các ứng dụng bình thường, đồng bộ. Nó Có một vài thiếu sót, tuy nhiên, điều đó có thể có tầm quan trọng cho một số người dùng:

  • PQEXECĐợi lệnh được hoàn thành. Ứng dụng có thể có công việc khác để làm (chẳng hạn như duy trì giao diện người dùng), trong trường hợp đó sẽ cách đọc kèo bóng đá muốn chặn chờ phản hồi.

  • 11675_11947

  • PQEXECchỉ có thể trả về mộtpgresultCấu trúc. Nếu Chuỗi cách đọc kèo bóng đá đã gửi chứa nhiềuSQLCác cách đọc kèo bóng đá, tất cả trừ cuối cùngpgresultbị loại bỏ bởiPQEXEC.

12353_12451PQEXECđược xây dựng từ:PQSendQueryPQGetResult. Cũng cóPQSendQueryParams, PQSendPrepare, PQSendQueryPrepared, , có thể được sử dụng vớiPQGetResultđể nhân đôi chức năng củaPQExecParams, PQPrepare, PQEXECPREPARED, PQDescriptePortal

PQSendQuery

gửi lệnh lên máy chủ mà cách đọc kèo bóng đá cần chờ kết quả). 1 được trả về nếu lệnh đã thành công được gửi và 0 nếu cách đọc kèo bóng đá (trong trường hợp đó, sử dụngpqerrormessageĐể biết thêm thông tin về sự thất bại).

int pqsendquery (pgconn *Conn, const char *cách đọc kèo bóng đá);

Sau khi gọi thành côngPQSendQuery13959_13968PQGetResultMột hoặc nhiều lần để có được kết quả.PQSendQuerycách đọc kèo bóng đá thể được gọi lại (trên cùng một kết nối) cho đến khiPQGetResultđã trả lại a con trỏ null, cho biết cách đọc kèo bóng đá đã hoàn thành.

PQSendQueryParams

14523_14623

int pqsendqueryparams (pgconn *Conn,
                              cách đọc kèo bóng đá const char *,
                              int nparams,
                              const oid *paramtypes,
                              const char * const * paramValues,
                              const int *paramlengths,
                              const int *paramformats,
                              int resultformat);

Điều này tương đương vớiPQSendQueryNgoại trừ các tham số truy vấn có thể được chỉ định riêng biệt với chuỗi truy vấn. Các Các tham số của chức năng được xử lý giống hệt vớiPQExecparams. GiốngPQExecParams, nó sẽ cách đọc kèo bóng đá làm việc trên các kết nối 2.0 giao thức và nó chỉ cho phép một lệnh trong chuỗi truy vấn.

PQSendPrepare

Gửi yêu cầu tạo câu lệnh đã chuẩn bị với Các tham số đã cho, mà cách đọc kèo bóng đá chờ hoàn thành.

int pqsendprepare (pgconn *Conn,
                          const char *stmtname,
                          const char *truy vấn,
                          int nparams,
                          const oid *paramtypes);

Đây là phiên bản cách đọc kèo bóng đá bộ củaPQPrepare: nó trả về 1 nếu nó có thể gửi yêu cầu và 0 nếu cách đọc kèo bóng đá. Sau khi thành công Gọi, gọiPQGetResultđến xác định xem máy chủ đã tạo thành công Tuyên bố chuẩn bị. Các tham số của chức năng được xử lý Diễn vớiPQPrepare. GiốngPQPrepare, nó sẽ cách đọc kèo bóng đá làm việc trên các kết nối 2.0 giao thức.

PQSendQueryPrepared

Gửi yêu cầu thực hiện một câu lệnh đã chuẩn bị với Các tham số đã cho, mà cách đọc kèo bóng đá chờ đợi (các) kết quả.

int pqsendqueryprepared (PGConn *Conn,
                                const char *stmtname,
                                int nparams,
                                const char * const * paramValues,
                                const int *paramlengths,
                                const int *paramformats,
                                int resultformat);

Điều này tương tựPQSendQueryParams, nhưng cách đọc kèo bóng đá sẽ được được thực thi được chỉ định bằng cách đặt tên một tuyên bố, thay vì đưa ra một chuỗi truy vấn. Chức năng của Các tham số được xử lý giống hệt vớiPQEXECPREPARED. GiốngPQEXECPREPARED, nó sẽ cách đọc kèo bóng đá hoạt động Kết nối 2.0-giao thức.

gửi yêu cầu lấy thông tin về tuyên bố đã chuẩn bị được chỉ định, mà cách đọc kèo bóng đá phải chờ đợi hoàn thành.

18335_18418

Đây là phiên bản cách đọc kèo bóng đá bộ của: nó trả về 1 nếu nó đã có thể gửi yêu cầu và 0 nếu cách đọc kèo bóng đá. Sau a cuộc gọi thành công, gọiPQGetResult18692_18787. Giống, Nó sẽ cách đọc kèo bóng đá hoạt động trên các kết nối 2.0 giao thức.

gửi yêu cầu lấy thông tin về cổng thông tin được chỉ định, mà cách đọc kèo bóng đá chờ hoàn thành.

19332_19415

Đây là phiên bản cách đọc kèo bóng đá bộ củaPQDescriptePortal: nó trả về 1 nếu nó là có thể gửi yêu cầu và 0 nếu cách đọc kèo bóng đá. Sau a cuộc gọi thành công, gọiPQGetResultĐể có được kết quả. Các Các tham số của chức năng được xử lý giống hệt với. GiốngPQDescriptePortal, nó sẽ cách đọc kèo bóng đá làm việc trên các kết nối 2.0 giao thức.

PQGetResult

Chờ kết quả tiếp theo từ trướcPQSendQuery, PQSendQueryParams, PQSendPreparehoặcPQSendQueryPreparedGọi và trả về nó. Một con trỏ null được trả về khi lệnh hoàn tất và Sẽ cách đọc kèo bóng đá có kết quả nữa.



        

PQGetResultphải được gọi liên tục cho đến khi nó trả lại một con trỏ null, chỉ ra rằng lệnh được thực hiện. (Nếu được gọi khi cách đọc kèo bóng đá có lệnh nào hoạt động,PQGetResultSẽ chỉ trở lại một con trỏ null cùng một lúc.) Mỗi ​​kết quả cách đọc kèo bóng đá null từPQGetResult21022_21068pgresultHàm accessor trước đây mô tả. Đừng quên giải phóng mỗi đối tượng kết quả vớiPQClearKhi được thực hiện với nó. Lưu ý rằngPQGetResultWill Chỉ chặn nếu một cách đọc kèo bóng đá đang hoạt động và cần thiết Dữ liệu phản hồi chưa được đọc bởiPQConsumeInput.

Sử dụngPQSendQueryPQGetResultgiải quyết một trongPQEXEC21687_21742SQLCác cách đọc kèo bóng đá, kết quả của các cách đọc kèo bóng đá đó có thể được lấy cá nhân. (Điều này cho phép một dạng đơn giản của chồng chéo Xử lý, nhân tiện: Khách hàng có thể xử lý kết quả của một cách đọc kèo bóng đá trong khi máy chủ vẫn đang hoạt động trên các truy vấn sau cùng một chuỗi cách đọc kèo bóng đá.) Tuy nhiên, gọiPQGetResultvẫn sẽ khiến máy khách chặn cho đến khi máy chủ hoàn thành tiếp theoSQLcách đọc kèo bóng đá. Điều này có thể tránh được bằng cách thích hợp Sử dụng thêm hai chức năng:

PQConsumeInput

Nếu đầu vào có sẵn từ máy chủ, hãy tiêu thụ nó.

int pqconsumeinput (pgconn *Conn);

PQConsumeInputThông thường trả về 1 chỉ ra"cách đọc kèo bóng đá có lỗi",, nhưng trả về 0 nếu có một loại rắc rối nào đó (trong đó trường hợppqerrormessagecó thể được tư vấn). Lưu ý rằng kết quả cách đọc kèo bóng đá cho biết liệu có Dữ liệu đầu vào thực sự được thu thập. Sau khi gọiPQConsumeInput, The Ứng dụng có thể kiểm trapqisbusyvà/hoặcpqnotifyesĐể xem nhà nước của họ có đã thay đổi.

PQConsumeInput23378_23596select ()Read-Ready chỉ định đi đi. Do đó ứng dụng có thể sử dụngPQConsumeInputĐể xóaselect ()Điều kiện ngay lập tức, và sau đó kiểm tra kết quả lúc rảnh rỗi.

PQISBusy

Trả về 1 nếu một cách đọc kèo bóng đá bận, nghĩa làPQGetResultsẽ chặn chờ đợi đầu vào. Trả về 0 chỉ ra rằngPQGetResultCó thể được gọi với sự đảm bảo cách đọc kèo bóng đá chặn.

int pqisbusy (pgconn *Conn);

pqisbusysẽ cách đọc kèo bóng đá chính nó cố gắng đọc dữ liệu từ máy chủ; Vì vậyPQConsumeInputphải là được viện dẫn trước, hoặc trạng thái bận rộn sẽ cách đọc kèo bóng đá bao giờ kết thúc.

Một ứng dụng điển hình sử dụng các chức năng này sẽ có một chính Vòng lặp sử dụngselect ()hoặcpoll ()Để chờ tất cả điều kiện mà nó phải đáp ứng. Một trong những điều kiện sẽ là đầu vào có sẵn từ máy chủ, theo điều khoảnselect ()có nghĩa là dữ liệu có thể đọc được trên tệp mô tả được xác định bởiPQSocket. Khi vòng chính phát hiện đầu vào sẵn sàng, nó sẽ gọiPQConsumeInputĐể đọc đầu vào. Sau đó nó có thể gọipqisbusy, theo sau quaPQGetResultnếupqisbusyTrả về sai (0). Nó cũng có thể gọipqnotifyesĐể phát hiệnThông báoTin nhắn (xemPhần 30.7).

Một máy khách sử dụngPQSendQuery/PQGetResultcũng có thể cố gắng hủy một cách đọc kèo bóng đá vẫn đang được máy chủ xử lý; nhìn thấyPhần 30.5. Nhưng bất kể Giá trị trả về củaPQCANCEL, The Ứng dụng phải tiếp tục với trình tự đọc kết quả bình thường sử dụngPQGetResult. Một thành công Hủy bỏ chỉ đơn giản là khiến cách đọc kèo bóng đá chấm dứt sớm hơn hơn nó sẽ có.

Bằng cách sử dụng các chức năng được mô tả ở trên, có thể Tránh chặn trong khi chờ đợi đầu vào từ máy chủ cơ sở dữ liệu. Tuy nhiên, vẫn có thể là ứng dụng sẽ chặn Đang chờ gửi đầu ra đến máy chủ. Điều này tương đối hiếm nhưng có thể xảy ra nếu các cách đọc kèo bóng đá SQL hoặc giá trị dữ liệu rất dài được gửi. (Sẽ có nhiều khả năng hơn nếu ứng dụng gửi dữ liệu quaSao chép trongTuy nhiên.) Để ngăn chặn điều này khả năng và đạt được cơ sở dữ liệu hoàn toàn cách đọc kèo bóng đá chặn hoạt động, các chức năng bổ sung sau đây có thể được sử dụng.

pqsetNonblocking

Đặt trạng thái cách đọc kèo bóng đá chặn của kết nối.

27105_27169

Đặt trạng thái kết nối thành cách đọc kèo bóng đá chặn nếuarglà 1 hoặc chặn nếuarglà 0. Trả về 0 nếu ok, -1 nếu lỗi.

Ở trạng thái cách đọc kèo bóng đá chặn, các cuộc gọi đếnPQSendQuery, pqputline, pqputnbytesPQENDCOPYsẽ cách đọc kèo bóng đá chặn mà thay vào đó trả lại lỗi nếu chúng cần được gọi lại.

Lưu ý rằngPQEXECcách đọc kèo bóng đá Danh dự chế độ cách đọc kèo bóng đá chặn; Nếu nó được gọi, nó sẽ hành động trong chặn thời trang dù sao.

pqisnonblocking

Trả về trạng thái chặn của cơ sở dữ liệu sự liên quan.

int pqisnonblockocking (const pgconn *Conn);

Trả về 1 nếu kết nối được đặt thành chế độ cách đọc kèo bóng đá chặn và 0 nếu chặn.

pqflush

cố gắng xóa bất kỳ dữ liệu đầu ra được xếp hàng nào vào máy chủ. Trả về 0 nếu thành công (hoặc nếu hàng đợi gửi trống), -1 Nếu nó thất bại vì một số lý do, hoặc 1 nếu nó cách đọc kèo bóng đá thể gửi Tất cả dữ liệu trong hàng đợi gửi (trường hợp này chỉ có thể xảy ra nếu kết nối cách đọc kèo bóng đá chặn).

int pqflush (pgconn *Conn);

Sau khi gửi bất kỳ lệnh hoặc dữ liệu nào trên kết nối cách đọc kèo bóng đá chặn, gọiPQFLUSH. Nếu nó trở lại 1, hãy đợi Để ổ cắm được viết sẵn và gọi lại; Lặp lại cho đến khi nó trả về 0. một lần29230_29239Trả về 0, đợi ổ cắm đã sẵn sàng và sau đó đọc phản hồi như mô tả ở trên.