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 kèo tỷ số bóng đá euro hôm nay đượ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 kèo tỷ số bóng đá euro hôm nay đượ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ế.

32.4. Xử lý lệnh kèo tỷ số bóng đá euro hôm nay bộ

ThePQEXECHàm là đủ để gửi các kèo tỷ số bóng đá euro hôm nay 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, có thể quan trọng đối với 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 phải làm (chẳng hạn như duy trì giao diện người dùng), trong trường hợp đó sẽ kèo tỷ số bóng đá euro hôm nay muốn chặn chờ phản hồi.

  • Vì việc thực hiện ứng dụng máy khách bị đình chỉ trong khi chờ kết quả, rất khó để ứng dụng quyết định rằng họ muốn cố gắng hủy lệnh liên tục. (Nó có thể được thực hiện từ một trình xử lý tín hiệu, nhưng kèo tỷ số bóng đá euro hôm nay phải khác.)

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

  • PQEXECLuôn thu thập toàn bộ kết quả của kèo tỷ số bóng đá euro hôm nay, đệm nó trong mộtpgresult. Mặc dù điều này đơn giản hóa logic xử lý lỗi cho ứng dụng, nhưng nó có thể kèo tỷ số bóng đá euro hôm nay thực tế đối với kết quả có chứa nhiều hàng.

Các ứng dụng kèo tỷ số bóng đá euro hôm nay thích những hạn chế này thay vào đó có thể sử dụng các chức năng cơ bản màPQEXECđược xây dựng từ:PQSendQueryPQGetResult. Cũng cóPQSendQueryParams, PQSendPrepare, PQSendQueryPrepared, , có thể được sử dụng vớiPQGetResultĐể sao chép chức năng củaPQExecParams, PQPrepare, PQExecprepared, PQDescriptePortal

PQSendQuery

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

13646_13699

Sau khi gọi thành côngPQSendQuery, gọiPQGetResultMột hoặc nhiều lần để có được kết quả.PQSendQuerykèo tỷ số bóng đá euro hôm nay thể được gọi lại (trên cùng một kết nối) cho đến khiPQGetResultđã trả về một con trỏ null, cho biết kèo tỷ số bóng đá euro hôm nay được thực hiện.

PQSendQueryParams

gửi một lệnh và các tham số riêng biệt vào máy chủ mà kèo tỷ số bóng đá euro hôm nay cần chờ kết quả.

int pqsendqueryparams (pgconn *Conn,

Đ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 tham số của chức năng được xử lý giống hệt vớiPQExecParams. GiốngPQExecparams, nó sẽ kèo tỷ số bóng đá euro hôm nay hoạt động 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à kèo tỷ số bóng đá euro hôm nay cần chờ hoàn thành.

int PQSendPrepare (PGConn *Conn,

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

PQSendQueryPrepared

Gửi yêu cầu thực thi câu lệnh đã chuẩn bị với các tham số đã cho, mà kèo tỷ số bóng đá euro hôm nay cần chờ kết quả.

int pqsendqueryprepared (PGConn *Conn,

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

17155_17268

17293_17358

Đây là phiên bản kèo tỷ số bóng đá euro hôm nay bộ của: nó trả về 1 nếu nó có thể gửi yêu cầu và 0 nếu kèo tỷ số bóng đá euro hôm nay. Sau một cuộc gọi thành công, hãy gọiPQGetResultĐể có được kết quả. Các tham số của chức năng được xử lý giống hệt với. Giống, nó sẽ kèo tỷ số bóng đá euro hôm nay 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à kèo tỷ số bóng đá euro hôm nay cần chờ hoàn thành.

18094_18159

Đây là phiên bản kèo tỷ số bóng đá euro hôm nay bộ củaPQDescriptePortal: nó trả về 1 nếu nó có thể gửi yêu cầu và 0 nếu kèo tỷ số bóng đá euro hôm nay. Sau một cuộc gọi thành công, hãy gọiPQGetResultĐể có được kết quả. Các tham số của chức năng được xử lý giống hệt vớiPQDescriptePortal. GiốngPQDescriptePortal, nó sẽ kèo tỷ số bóng đá euro hôm nay hoạt động 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, PQSendPrepare, PQSendQueryPrepared, hoặcGọi và trả lại nó. Một con trỏ null được trả về khi lệnh hoàn tất và sẽ kèo tỷ số bóng đá euro hôm nay còn kết quả nữa.


PQGetResultphải được gọi nhiều lần cho đến khi nó trả về một con trỏ null, cho biết lệnh được thực hiện. (Nếu được gọi khi kèo tỷ số bóng đá euro hôm nay 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ả kèo tỷ số bóng đá euro hôm nay null từPQGetResultNên được xử lý bằng cách sử dụng cùngpgresultHàm accessor được mô tả trước đây. Đừ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ằngPQGetResultSẽ chỉ chặn nếu một kèo tỷ số bóng đá euro hôm nay đang hoạt động và dữ liệu phản hồi cần thiết chưa được đọc bởiPQConsumeInput.

Lưu ý:ngay cả khiPQResultstatusCho biết lỗi nghiêm trọng,PQGetResultnên được gọi cho đến khi nó trả về một con trỏ null, để cho phéplibpqĐể xử lý hoàn toàn thông tin lỗi.

Sử dụngPQSendQueryPQGetResultgiải quyết một trongPQEXECS Vấn đề: Nếu chuỗi kèo tỷ số bóng đá euro hôm nay chứa nhiềuSQLCác kèo tỷ số bóng đá euro hôm nay, kết quả của các kèo tỷ số bóng đá euro hôm nay đó có thể được lấy riêng lẻ. .

Một tính năng khác thường có thể thu được bằngPQSendQueryPQGetResultđang truy xuất kết quả truy vấn lớn một hàng tại một thời điểm. Điều này được thảo luận trongPhần 32.5.

Chính 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 theoSQLkèo tỷ số bóng đá euro hôm nay. Điều này có thể tránh được bằng cách sử dụng đúng 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"kèo tỷ số bóng đá euro hôm nay 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ợp đópqerrormessagecó thể được tư vấn). Lưu ý rằng kết quả kèo tỷ số bóng đá euro hôm nay cho biết liệu có bất kỳ dữ liệu đầu vào nào được thu thập hay kèo tỷ số bóng đá euro hôm nay.PQConsumeInput, ứng dụng có thể kiểm trapqisbusyvà/hoặcpqnotifyesĐể xem trạng thái của họ có thay đổi kèo tỷ số bóng đá euro hôm nay.

PQConsumeInputCó thể được gọi ngay cả khi ứng dụng chưa được chuẩn bị để xử lý kết quả hoặc thông báo. Chức năng sẽ đọc dữ liệu có sẵn và lưu nó trong bộ đệm, do đó gây raselect ()Chỉ báo sẵn sàng để biến mất. Do đó ứng dụng có thể sử dụngPQConsumeInputĐể xóaselect ()Điều kiện ngay lập tức, sau đó kiểm tra kết quả lúc rảnh rỗi.

PQISBusy

Trả về 1 nếu kèo tỷ số bóng đá euro hôm nay bận, nghĩa làPQGetResultSẽ chặn chờ nhập. Trả về 0 chỉ ra rằngPQGetResultCó thể được gọi với sự đảm bảo kèo tỷ số bóng đá euro hôm nay chặn.

int pqisbusy (pgconn *Conn);

23138_23148Bản thân nó sẽ kèo tỷ số bóng đá euro hôm nay cố gắng đọc dữ liệu từ máy chủ; Vì vậyPQConsumeInputphải được gọi trước hoặc trạng thái bận rộn sẽ kèo tỷ số bóng đá euro hôm nay 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 vòng chính sử dụngselect ()hoặcpoll ()Để chờ tất cả các điều kiện mà nó phải đáp ứng. Một trong các điều kiện sẽ được nhập từ máy chủ, theo điều khoảnselect ()có nghĩa là dữ liệu có thể đọc được trên bộ mô tả tệp đượ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 làPQGetResultnếupqisbusyTrả về false (0). Nó cũng có thể gọipqnotifyesĐể phát hiệnThông báoTin nhắn (xemPhần 32.8).

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

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ể ứng dụng sẽ chặn chờ gửi đầu ra đến máy chủ.Sao chép trongTuy nhiên.) Để ngăn chặn khả năng này và đạt được hoạt động cơ sở dữ liệu hoàn toàn kèo tỷ số bóng đá euro hôm nay chặn, có thể sử dụng các chức năng bổ sung sau đây.

pqsetNonblocking

Đặt trạng thái kèo tỷ số bóng đá euro hôm nay chặn của kết nối.

int pqsetNonblocking (pgconn *Conn, int arg);

Đặt trạng thái kết nối thành kèo tỷ số bóng đá euro hôm nay 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 kèo tỷ số bóng đá euro hôm nay chặn, các cuộc gọi đếnPQSendQuery, pqputline, pqputnbytes, PQPutCopydataPQENDCOPYsẽ kèo tỷ số bóng đá euro hôm nay chặn mà thay vào đó lại trả lại lỗi nếu chúng cần được gọi lại.

Lưu ý rằngPQEXECkèo tỷ số bóng đá euro hôm nay tôn trọng chế độ kèo tỷ số bóng đá euro hôm nay chặn; Nếu nó được gọi, dù sao nó cũng sẽ hành động theo thời trang.

pqisnonblocking

Trả về trạng thái chặn của kết nối cơ sở dữ liệu.

int pqisnonblocking (const pgconn *Conn);

Trả về 1 nếu kết nối được đặt thành chế độ kèo tỷ số bóng đá euro hôm nay 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ó kèo tỷ số bóng đá euro hôm nay thành công vì một số lý do hoặc 1 nếu nó kèo tỷ số bóng đá euro hôm nay 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 kèo tỷ số bóng đá euro hôm nay 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 kèo tỷ số bóng đá euro hôm nay chặn, hãy gọiPQFLUSH. Nếu nó trả về 1, hãy đợi ổ cắm được đọc hoặc viết.PQFLUSHMột lần nữa. Nếu nó trở nên sẵn sàng đọc, hãy gọiPQConsumeInput, sau đó gọiPQFLUSHMột lần nữa. Lặp lại cho đến khiPQFLUSHTrả về 0. (Cần kiểm tra sẵn sàng đọc và thoát đầu vào vớiPQConsumeInput, vì máy chủ có thể chặn cố gắng gửi dữ liệu của chúng tôi, ví dụ: thông báo thông báo và sẽ kèo tỷ số bóng đá euro hôm nay đọc dữ liệu của chúng tôi cho đến khi chúng tôi đọc nó.)PQFLUSHTrả về 0, đợi ổ cắm được đọc sẵn sàng và sau đó đọc phản hồi như mô tả ở trên.